python - Python:将新项目附加到熊猫数据框中的列表时出错
问题描述
我有一个包含三列的 pandas 数据框:user_id (str)、list_of_purchases (list) 和一个名为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','Success']
- 当b = 0 时,final_list应该是 ['item_1', 'item_2', 'item_3','Null']而不是 "success"
我尝试了以下代码,但得到了错误:
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列中的每一行,但它确实效率低下并且需要很长时间。
在此先感谢您的帮助!
解决方案
#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)
据我了解,熊猫数据框并非旨在将列表存储为它们的值,因此没有超高效的解决方案
推荐阅读
- google-sheets - 有没有办法在 Google 表格上部署机器学习模型?
- python - 尝试连接到 dask 仪表板时出现“404 Not found”
- c++ - 带有“无限”参数的 c++ 模板
- electron - 在 Cypress 中设置 Electron 的语言
- javascript - 如何在各个页面中具有相同 ID 的多个页面上使用 JavaScript 隐藏/显示链接(元素)?
- php - PHP:file_get_contents():SSL 操作失败,代码为 1
- java - 未使用改造从 IGDB Api 接收所有数据
- sql - SSRS - 具有不同价值的多个数据
- javascript - 停止提交按钮不发布并返回同一页面
- solr - 如何确定 solr 停止运行的原因?