为了账号安全,请及时绑定邮箱和手机立即绑定

在 Pandas 上创建变量时出错 - 传递的项目数错误

在 Pandas 上创建变量时出错 - 传递的项目数错误

森林海 2021-12-09 15:28:17
我收到错误消息:ValueError:错误的项目数为 3,放置意味着 1,我正在努力弄清楚从哪里开始,以及如何开始解决这个问题。我不太明白错误的含义;这让我很难排除故障。我还在我的 Jupyter Notebook 中包含了触发错误的代码块。根据许多条件,我无法在数据帧上创建变量。我希望根据条件的答案添加一个带有二进制变量“是”/“否”的列。我的数据框是从 11 列的 CSV 文件构建的。我试试这个代码:import pandas as pdimport numpy as npdf['yes/no'] = np.where(df[(df['var_1'].isin(list)) & (df['var2'] >= '2000-01-01') & (df['var_2'] <= '2000-12-31') & (df['var_3'] >0) & (df['var_4'] =='OK')],'yes','No')我认为问题来自变量的创建,因为没有np.where条件的代码是正确的。但是当我想用这些条件创建一个变量并执行代码时,它会显示错误:Wrong number of items passed 12, placement implies 1您知道该错误意味着什么以及如何解决吗?
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

np.where返回一个大小仅为它找到的匹配数的数组。如果你想在你的 df 中添加一列,你需要一个大小相同的系列,True或者False取决于条件。为此,只需使用一个裸条件:


df['yes/no'] = 'No'

rows = (df['var_1'].isin(list)) & 

    (df['var2'] >= '2000-01-01') & 

    (df['var_2'] <= '2000-12-31') & 

    (df['var_3'] >0) & 

     (df['var_4'] =='OK')

df.loc[rows, 'yes/no'] = 'yes'


查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 327 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号