将数组的numpy数组转换为字符串的数据帧



我有麻烦将我的数组数组转换为字符串数组:

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'

你可以这样做——

带列表推导式

  1. 使用str(i)将X元素转换为字符串
  2. 用列表推导式遍历每一行,并使用' '.join(i)
  3. 用空格连接
  4. 转换为列名为"坐标"的数据帧
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

  1. 使用.astype(str)
  2. 将X元素转换为字符串
  3. 然后你可以在轴1上应用' '.join()来连接数组
  4. 转换为列名为"坐标"的数据帧
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"。

最新更新