如何在熊猫 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 列中分配列表值?的主要内容,如果未能解决你的问题,请参考以下文章

在熊猫中分配线条颜色

如何自动从熊猫表中分配变量?

如何将带有列表值的熊猫列连接到一个列表中?

如何将熊猫列的值设置为列表

如何在熊猫数据框中使用列表作为值?

如何在熊猫数据框中使用列表作为值?