python - pandas 加列,注意一个Series的真值是不明确的
问题描述
我想在数据框a中添加一列,
a = pd.DataFrame([[1,2],[3,4]],columns=['A','B'])
if a['B'] > a['A']:
a['C']='是'
else:
a['C']='否'
ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
解决方案
使用numpy.where
:
#swapped 2,1
a = pd.DataFrame([[2,1],[3,4]],columns=['A','B'])
a['C'] = np.where(a['B']>a['A'], '是','否')
print (a)
A B C
0 2 1 否
1 3 4 是
您的代码的问题是如果使用:
print (a['B']>a['A'])
0 False
1 True
dtype: bool
它返回布尔掩码,if
无法决定要做什么。
还要检查是否使用带有 pandas 的真值语句。
推荐阅读
- c - MinGW gcc C 编译程序被 avast 检测为病毒
- powershell - 在 powershell 脚本(Azure Devops Yaml)中难以转义引号字符
- node.js - 测功机重新启动后,更改不会保存在 Heroku 上
- c - 此函数告诉我应该在二叉树中向左还是向右,当尝试将结果与 & 运算符一起使用时编译器返回错误
- c# - TriLib SharpZipLib.Zip.ZipEntry - 无法访问 GetInputStream() 的封闭流
- node.js - 抓取一个使用 javascript 注入 html 的网站
- sql - 默认情况下使用 SYSDATE 填充 NULL 日期字段
- javascript - 从画布发送图像,并等待 AJAX POST 响应
- amazon-web-services - 如何向 AWS 负载均衡器添加逻辑以将请求转发到特定集群
- html - 如何在 TailWind 中设置与窗口大小成比例的高度?