为了账号安全,请及时绑定邮箱和手机立即绑定

提取numpy数组类型的pandas数组元素

提取numpy数组类型的pandas数组元素

不负相思意 2021-12-29 10:49:38
我有一个 Pandas 数据框,df它的每个元素都是一个完整的 numpy 数组。例如列的第 6 行'x_grid':>>> e = df.loc[6,'x_grid']>>> print(e)[-11.52616579 -11.48006112 -11.43395646 -11.3878518  -11.34174713 -11.29564247 -11.24953781 -11.20343315 -11.15732848 -11.11122382 -11.06511916 -11.01901449 ...但是我不能将它用作 numpy 数组,因为它只是作为字符串给出:>>> print(type(e))<class 'str'>如何将 numpy 数组存储到数据帧中,使其不会被转换为字符串?或者以一种很好的方式将此字符串转换回 numpy 数组?
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

想要扩展 Rafal 的答案,以避免 numpy 从空字符串中抛出异常x.split

df['x_grid'].str[1:-1].apply(lambda x: list(filter(None,x.split(' ')))).apply(lambda x: np.array(x).astype(np.float))



查看完整回答
反对 回复 2021-12-29
?
jeck猫

TA贡献1909条经验 获得超7个赞

如果您只想将每一行中的所有这些字符串转换为列表,则以下内容将起作用:


df['x_grid'].str[1:-1].str.split(" ").apply(lambda x: (list(map(float, x))))


# or for a numpy array

df['x_grid'].str[1:-1].str.split(" ").apply(lambda x: (np.array(list(map(float, x)))))

希望有帮助。


查看完整回答
反对 回复 2021-12-29
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

由于尔法恩hpaulj对于合并来回答这个问题的建议。

解决方案是,在设置数据帧的元素时,我首先将 numpy 数组x转换为列表(因此它以逗号分隔而不是空格分隔):

df = df.append({'x_grid': list(x)}, ignore_index=True)

然后在保存到 csv 并重新加载后,我使用np.array()and将其提取回一个 numpy 数组ast.literal_eval()(注意:需要import ast):

x = np.array(ast.literal_eval(df.loc[entry,'x_grid']))

然后返回一个正确的 numpy 数组x


查看完整回答
反对 回复 2021-12-29
  • 3 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信