微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数组的numpy数组转换为字符串的数据帧 具有列表理解使用 Numpy与熊猫

如何解决将数组的numpy数组转换为字符串的数据帧 具有列表理解使用 Numpy与熊猫

我无法将数组数组转换为字符串数组:

import numpy as np

X = np.array([[-1,-1],[-2,[-3,-2],[1,1],[2,[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. 转换为列名为“坐标”的数据框
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) 将 X 元素转换为字符串
  2. 然后你可以在轴 1 上应用 ' '.join() 来连接数组
  3. 转换为列名为“坐标”的数据框
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,[-3,-2],[1,1],[2,[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-strings 和列表推导来完成此任务。 例如:

X = np.array([[-1,2]])

X_string = np.array([f"{i[0]} {i[1]}" for i in X])

pd.DataFrame(data=X_string,columns=["coordinates"])

输出将与所需完全相同。但我认为这不是您任务的最佳设计。如果我是你,我可能会将坐标列分成两个单独的(例如“纬度”和“经度”)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。