首页 > 解决方案 > Python:将新项目附加到熊猫数据框中的列表时出错

问题描述

我有一个包含三列的 pandas 数据框:user_id (str)、list_of_purchases (list) 和一个名为b的二进制列。

我想创建一个名为final_list的第四列,它遵循以下规则:

我尝试了以下代码,但得到了错误:

df['final_list'] = np.where(
    df['b'] == 0,
    df['list_of_purchases'] + ['Null'],
    df['list_of_purchases'] + ['Success'])

TypeError: Cannot broadcast np.ndarray with operand of type <class 'list'>

我想出了如何使用 for 循环并检查b列中的每一行,但它确实效率低下并且需要很长时间。

在此先感谢您的帮助!

标签: pythonpandaslistnumpy

解决方案


#create a function:
def lista(df):
    return [df['list_of_purchases'] + ['Null'] if df['b'] == 0 else df['list_of_purchases'] + ['Success']]

#use the function on every row of df:
df['final_list'] = df.apply(lista, axis=1)

据我了解,熊猫数据框并非旨在将列表存储为它们的值,因此没有超高效的解决方案


推荐阅读