最佳答案
我有一个列表“ 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]
我想插入到 df2.loc[1,'B']
和/或 df3.loc[1,'B']
的“ abc”列表。
如果数据框架中的列只包含整数值和/或 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
。