python - 在 Pandas 上创建变量时出错 - 传递的项目数错误
问题描述
我收到错误: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
您知道该错误的含义以及如何解决该错误吗?
谢谢
解决方案
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'
推荐阅读
- dart - Android 之类的日历,用于 dart 中的日期计算
- cypress - 无法使用 cypressJS 请求路由
- c# - 在嵌套循环中获取对象
- python - 如何在列表正在填充且任务尚未完成时通过views.py访问tasks.py中的列表的值?
- reactjs - npm 错误!在“...ersion: OpenPGP.js v3”附近解析时 JSON 输入意外结束 在安装 create-react-app 和中止时收到此错误
- bash - 获取最后日志 10 分钟的 shell 脚本问题
- linux - 运行单元测试时出现 DlibDotNet 异常:System.DllNotFoundException:无法加载共享库“DlibDotNetNative”
- python - 如何使用多维输入预测 Keras 中的序列?
- salesforce - 如何让 Salesforce 页面显示更多字段?
- python - 将 Key-Length-Value (KLV) 字符串拆分为 key、length、value 的小列表