我收到错误消息:ValueError:传递的项目数不正确3,放置位置隐含1,并且我正在努力找出在哪里以及如何开始解决该问题。
我不太了解错误的含义;这使我很难进行故障排除。我还在Jupyter Notebook中包含了触发错误的代码块。
我很难根据许多条件在数据框上创建变量。
我希望根据条件的答案在列中添加一个二进制变量“是” /“否”。
我的数据框是由具有11列的CSV文件构建的。
我尝试以下代码:
import pandas as pd
import numpy as np
df['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
您知道该错误的含义以及如何解决该错误吗?
谢谢
答案 0 :(得分:0)
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'