猿问

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

我有一个 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 数组?


不负相思意
浏览 208回答 3
3回答

慕桂英4014372

想要扩展 Rafal 的答案,以避免 numpy 从空字符串中抛出异常x.split:df['x_grid'].str[1:-1].apply(lambda&nbsp;x:&nbsp;list(filter(None,x.split('&nbsp;')))).apply(lambda&nbsp;x:&nbsp;np.array(x).astype(np.float))

jeck猫

如果您只想将每一行中的所有这些字符串转换为列表,则以下内容将起作用:df['x_grid'].str[1:-1].str.split(" ").apply(lambda x: (list(map(float, x))))# or for a numpy arraydf['x_grid'].str[1:-1].str.split(" ").apply(lambda x: (np.array(list(map(float, x)))))希望有帮助。

红糖糍粑

由于尔法恩和hpaulj对于合并来回答这个问题的建议。解决方案是,在设置数据帧的元素时,我首先将 numpy 数组x转换为列表(因此它以逗号分隔而不是空格分隔):df&nbsp;=&nbsp;df.append({'x_grid':&nbsp;list(x)},&nbsp;ignore_index=True)然后在保存到 csv 并重新加载后,我使用np.array()and将其提取回一个 numpy 数组ast.literal_eval()(注意:需要import ast):x&nbsp;=&nbsp;np.array(ast.literal_eval(df.loc[entry,'x_grid']))然后返回一个正确的 numpy 数组x。
随时随地看视频慕课网APP

相关分类

Python
我要回答