我有麻烦将我的数组数组转换为字符串数组:
import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
我想建立一个数据框架,看起来像:
"coordinate"
0 '-1 -1'
1 '-2 -1'
2 '-3 -2'
3 '1 1'
4 '2 1'
5 '3 2'
你可以这样做——
带列表推导式
- 使用str(i)将X元素转换为字符串
- 用列表推导式遍历每一行,并使用
' '.join(i)
用空格连接 - 转换为列名为"坐标"的数据帧
data = [' '.join(str(i)) for i in X]
df = pd.DataFrame(data, columns=['coordinates'])
print(df)
coordinates
0 -1 -1
1 -2 -1
2 -3 -2
3 1 1
4 2 1
5 3 2
与Numpy- 使用
.astype(str)
将X元素转换为字符串 - 然后你可以在轴1上应用
' '.join()
来连接数组 - 转换为列名为"坐标"的数据帧
data = np.apply_along_axis(' '.join, 1, X.astype(str))
df = pd.DataFrame(data, columns=['coordinates'])
print(df)
coordinates
0 -1 -1
1 -2 -1
2 -3 -2
3 1 1
4 2 1
5 3 2
与熊猫你也可以对熊猫这样做。
df = pd.DataFrame(X)
df = df[0].map(str)+' '+df[1].map(str)
df = pd.DataFrame(df, columns=['coordinates'])
print(df)
coordinates
0 -1 -1
1 -2 -1
2 -3 -2
3 1 1
4 2 1
5 3 2
您可以通过以下方式实现:
import pandas as pd
import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
df = pd.DataFrame(columns=['coordinate'])
for index, item in enumerate(X):
df.at[index, 'coordinate'] = ' '.join(item.astype(str))
结果:
print(df)
coordinate
0 -1 -1
1 -2 -1
2 -3 -2
3 1 1
4 2 1
5 3 2
您可以使用f-string和列表推导来执行此任务。例如:
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
X_string = np.array([f"{i[0]} {i[1]}" for i in X])
pd.DataFrame(data=X_string, columns=["coordinates"])
输出将与期望的完全相同。但我认为这不是你任务的最佳设计。如果我是你,我可能会将坐标列拆分为两个单独的(例如"lat")和"lon"。