【发布时间】:2014-12-16 11:23:23
【问题描述】:
我有一个列表“abc”和一个数据框“df”:
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
我想将列表插入单元格 1B,所以我想要这个结果:
A B
0 12 NaN
1 23 ['foo', 'bar']
我可以这样做吗?
1) 如果我使用这个:
df.ix[1,'B'] = abc
我收到以下错误消息:
ValueError: Must have equal len keys and value when setting with an iterable
因为它试图将列表(包含两个元素)插入行/列而不是单元格。
2) 如果我使用这个:
df.ix[1,'B'] = [abc]
然后它会插入一个列表,其中只有一个元素是“abc”列表 ([['foo', 'bar']])。
3) 如果我使用这个:
df.ix[1,'B'] = ', '.join(abc)
然后它插入一个字符串:(foo, bar)但不是一个列表。
4) 如果我使用这个:
df.ix[1,'B'] = [', '.join(abc)]
然后它插入一个列表,但它只有一个元素(['foo, bar']),但不是我想要的两个(['foo', 'bar'])。
感谢您的帮助!
编辑
我的新数据框和旧列表:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
另一个数据框:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
我想将“abc”列表插入df2.loc[1,'B'] 和/或df3.loc[1,'B']。
如果数据框的列仅包含整数值和/或 NaN 值和/或列表值,则将列表插入单元格效果很好。如果数据框的列仅包含字符串值和/或 NaN 值和/或列表值,则将列表插入单元格效果很好。但是,如果数据框包含具有整数和字符串值的列以及其他列,那么如果我使用它,则会出现错误消息:df2.loc[1,'B'] = abc 或 df3.loc[1,'B'] = abc。
另一个数据框:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
这些插件完美运行:df.loc[1,'B'] = abc 或 df4.loc[1,'B'] = abc。
【问题讨论】:
-
你用的是什么版本的熊猫?以下使用熊猫
0.15.0:df.loc[1,'b'] = ['foo','bar'] -
谢谢!我使用 Python 2.7,我尝试了 pandas 0.14.0 和 0.15.0,它与上面的测试数据一起工作。但是,如果我有一个带有一些整数值的“C”列怎么办? 'A' 有字符串。有一个整数列和一个 srting 列我得到同样的错误: ValueError: Must have equal len keys and value when setting with an iterable
-
你将不得不发布数据和代码来解释和展示你的意思
标签: python list pandas insert dataframe