pandas:如何将列表存储在数据框中? [复制]

Posted

技术标签:

【中文标题】pandas:如何将列表存储在数据框中? [复制]【英文标题】:pandas: how to store a list in a dataframe? [duplicate] 【发布时间】:2016-11-03 04:33:29 【问题描述】:

我想将单元格值设置为列表。比如说:

df.loc['a']['b'] = ['one', 'two', 'three']

但是,我无法这样做,因为我收到以下错误:

ValueError: Must have equal len keys and value when setting with an iterable

我的数据框目前只是全零并且是 nxn。有什么方法可以设置单元格值,这样当我执行df.loc['a']['b'] 时,我会返回['one', 'two', 'three']

【问题讨论】:

df.loc['a']['b'] = [['one', 'two', 'three']] 工作吗? 【参考方案1】:

问题是您可能有一个数据框,其中所有列都是浮点或整数类型的系列。解决方案是更改它们的类型“对象”。

In [3]: df = pd.DataFrame(np.zeros((4,4)))

In [4]: df
Out[4]: 
     0    1    2    3
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0

In [5]: df.dtypes
Out[5]: 
0    float64
1    float64
2    float64
3    float64
dtype: object

In [6]: df = df.astype('object')

In [7]: df[1][2] = [1,2,3]

In [8]: df
Out[8]: 
   0          1  2  3
0  0          0  0  0
1  0          0  0  0
2  0  [1, 2, 3]  0  0
3  0          0  0  0

【讨论】:

你不能在一列上设置 dtype 吗? @juanpa.arrivillaga 是的,我只需要按照梅林所说的那样做一列【参考方案2】:

这是一种折磨人的做法。我真的希望有人有更好的答案。

df.loc[['a'], ['b']] = df.loc[['a'], ['b']].applymap(lambda x: ['one', 'two', 'three'])

【讨论】:

很好的解决方案。把它放在书签上:)

以上是关于pandas:如何将列表存储在数据框中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将网站上所有抓取的数据保存在 pandas 数据框中?

Pandas 将文件名存储在列表中,并将所有文件读入数据框

如果值在列表中,则 Pandas 数据框中的重复行

如何从 imdb 获取更多信息并将其保存在 pandas 数据框中? [复制]

如何使用 PANDAS 获取具有 NAN 值的列名并将这些列名存储在列表中? [复制]

将列表中具有零值的多个列添加到 Pandas 数据框中