如何在熊猫 df 列中分配列表值?
Posted
技术标签:
【中文标题】如何在熊猫 df 列中分配列表值?【英文标题】:How to assign list value in a pandas df column? 【发布时间】:2019-04-23 05:04:10 【问题描述】:我想创建一个新的 df 列来保存列表值。
def add_list_values(row): # row parameter is needed but not in this sample code
list_val = [1, 'OKOKOK', 2123]
return list_val
df['new_col'] = df.apply(add_list_values, axis=1)
Error: ValueError: Shape of passed values is (91, 4), indices imply (91, 2)
当我通过简单地分配具有列表值的列进行测试时,我得到了类似的错误。
df['new_col2'] = [1, 'OKOKOK', 2123]
ValueError: Length of values does not match length of index
【问题讨论】:
您预期的“new_col2”列值是多少?列表 [1, 'OKOKOK', 2123] 的样本?根据错误,似乎行数不匹配。[1, 'OKOKOK', 2123]
的长度为 3,在您的示例中,df
的长度似乎比这更长。要将列表[1, 'OKOKOK', 2123]
分配给df
中的每一行,请执行类似df['new_col2'] = [[1, 'OKOKOK', 2123] for x in df.index]
【参考方案1】:
如果我理解正确,试试这个而不是给你一个错误的行:
df['c']=[[1, 'OKOKOK', 2123]]*len(df)
df
Out[148]:
a b c
0 1 1 [1, OKOKOK, 2123]
1 3 4 [1, OKOKOK, 2123]
2 3 4 [1, OKOKOK, 2123]
【讨论】:
能否请您详细说明如何将其应用于 df.apply 中使用的函数? // ,我假设此代码将替换原始问题中的df['new_col2'] = [1, 'OKOKOK', 2123]
?
我试过了,但得到了这个错误 - ValueError: Wrong number of items passed 2, placement 意味着 1以上是关于如何在熊猫 df 列中分配列表值?的主要内容,如果未能解决你的问题,请参考以下文章