python - 如何修复'ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。何时使用 &
问题描述
我想根据多列条件重新分配值,但ValueError
出现了。我使用&
了而不是and
,这通常是解决此类错误的答案。我的目标和代码如下:
ValueError: The truth value of a DataFrame is ambiguous.
Use a.empty, a.bool(), a.item(), a.any() or a.all().
我想重新编码YearsInCanada == Age
ifCountryBorn == Canada
和YearsInCanada == None
df
Age CountryBorn YearsInCanada
87 NaN 77
67 Canada 67
29 US 7
26 US 10
22 US 12
35 Canada NaN
45 Canada NaN
expected output
Age CountryBorn YearsInCanada
87 NaN 77
67 Canada 67
29 US 7
26 US 10
22 US 12
35 Canada 35
45 Canada 45
我的以下代码显示了ValueError
if df.loc[(df['YearsInCanada'] == None) & (df['CountryBorn'] == 'Canada')]:
df['YearsInCanada'] == df['Age']
else:
df['YearsInCanada'] == df['YearsInCanada']
谢谢
解决方案
df.loc[(df['YearsInCanada'] == None) & (df['CountryBorn'] == 'Canada')]
这将返回一个(导出的)数据框。 if
需要一个布尔表达式。
如果您尝试进行矢量化分配,则必须将其编码为 Pandas 动作 + 过滤器,而不是 Python if
。
推荐阅读
- javascript - 如何优化列表所有猫鼬查询?
- javascript - 在 Node.js 和浏览器中排序数组结果不同
- django - django 模型保存方法的奇怪行为。“(1048,“列'created_at'不能为空”)“在具有auto_now_add = True的字段上
- symfony - OVH 服务器上的 symfony 4.3,缓存清除返回错误 255(同时 composer update / heroku deploy from github)
- azure - 使用 Get-AzTable Powershell 脚本从 Azure 表访问数据时出错
- c - 编写一个在 C 中创建锯齿状 2D 零数组的函数
- android - Android 深层链接总是先在浏览器中打开,然后才是正确的活动
- flutter - 如何在 Flutter 中删除 TextFormField 中的错误消息
- reactjs - React 使浏览器变得迟钝
- python - 如何到达迷宫的终点?