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

时间:2019-03-19 09:40:27

标签: python pandas variables

我收到错误消息: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

您知道该错误的含义以及如何解决该错误吗?

谢谢

1 个答案:

答案 0 :(得分:0)

np.where返回一个数组,该数组的大小仅与找到的匹配项数相同。如果要在df中添加一列,则需要一个大小相同的序列,根据情况使用TrueFalse。为此,只需使用裸露条件:

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'