【问题标题】:Assign a numpy array to a specific cell of a pandas dataframe将 numpy 数组分配给 pandas 数据框的特定单元格
【发布时间】:2018-12-23 12:59:51
【问题描述】:

是否可以在单个 pandas 单元格中存储一个 numpy 数组?例如,假设我们有以下 df

import pandas as pd
import numpy as np
df= pd.DataFrame(np.nan, columns =["A","B","C"], index =np.arange(5))

可以如下设置特定单元格

df.ix[1,"A"]=2 # This works

但是,如果我尝试分配一个 numpy 数组,它会失败并出现 ValueError: setting an array element with a sequence. 异常。

df.ix[1,"A"]=np.arange(5) #This fails

有没有办法解决这个问题?有一个类似的solution on SO,它建议将值作为 numpy 数组作为列表传递,但在我的情况下似乎不起作用。

df.ix[1,"A"]=list(np.arange(5)) #This also fails

有什么建议吗?

【问题讨论】:

  • 您不应该使用ix,它已被弃用,请使用ilocloc

标签: pandas numpy


【解决方案1】:

将您的df设置为object,然后使用at

df=df.astype(object)
df.at[2, 'A']=np.arange(5).tolist()
df
Out[422]: 
                 A    B    C
0              NaN  NaN  NaN
1              NaN  NaN  NaN
2  [0, 1, 2, 3, 4]  NaN  NaN
3              NaN  NaN  NaN
4              NaN  NaN  NaN

【讨论】:

  • 感谢您的帮助。您知道如何将 df 转换回数字数据类型吗? df.apply(pd.to_numeric) 这种方法在我的情况下不起作用,因为单元格保存为一串值,例如 this"[792.6825 792.625 792.44 ... 896.795 897.1425 897.59 ]"
  • @LiamdeBoeuf 看看ast
猜你喜欢
  • 2020-09-30
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多