【发布时间】:2021-11-16 03:47:17
【问题描述】:
我有一个包含三列的 pandas 数据框:user_id(str)、list_of_purchases(列表)和一个名为 b 的二进制列。
我想创建一个名为 final_list 的第四列,它遵循以下规则:
- 当 b = 1 时,final_list 应该是 list_of_purchases 和项目“Success”的串联。例如,如果 list_of_purchases = ['item_1', 'item_2', 'item_3'] 那么 final_list 应该是 ['item_1', 'item_2', 'item_3' ,'成功']
- 当 b = 0 时,final_list 应该是 ['item_1', 'item_2', 'item_3','Null']
我尝试了以下代码,但得到了错误:
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 中的每一行,但它确实效率低下并且需要很长时间。
提前感谢您的帮助!
【问题讨论】:
-
df_paths是什么,它与df有什么关系? -
嗨@Barmar!抱歉,代码不正确。没有 df_paths,只有 df。我刚刚修好了。