为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复“ValueError:DataFrame 的真值不明确”。

如何修复“ValueError:DataFrame 的真值不明确”。

慕田峪7331174 2021-11-23 19:12:50
我想根据多列条件重新分配值,但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 如果CountryBorn == Canada和YearsInCanada == NonedfAge    CountryBorn    YearsInCanada87     NaN            77      67     Canada         6729     US             726     US             1022     US             1235     Canada         NaN45     Canada         NaNexpected outputAge    CountryBorn    YearsInCanada87     NaN            77      67     Canada         6729     US             726     US             1022     US             1235     Canada         3545     Canada         45我的以下代码显示 ValueError    if df.loc[(df['YearsInCanada'] == None) & (df['CountryBorn'] == 'Canada')]:        df['YearsInCanada'] == df['Age']    else:        df['YearsInCanada'] == df['YearsInCanada']谢谢
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

解决方案使用np.where():


df.YearsInCanada=np.where((df['YearsInCanada'].isna()) & (df['CountryBorn'] == 'Canada'),\

                      df.YearsInCanada.fillna(df.Age),df.YearsInCanada)

print(df)


   Age CountryBorn  YearsInCanada

0   87         NaN           77.0

1   67      Canada           67.0

2   29          US            7.0

3   26          US           10.0

4   22          US           12.0

5   35      Canada           35.0

6   45      Canada           45.0


查看完整回答
反对 回复 2021-11-23
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

df.loc[(df['YearsInCanada'] == None) & (df['CountryBorn'] == 'Canada')]

这将返回一个(派生的)数据帧。 if需要一个布尔表达式。

如果您尝试进行矢量化分配,则必须将其编码为 Pandas 操作 + 过滤器,而不是 Python if


查看完整回答
反对 回复 2021-11-23
  • 2 回答
  • 0 关注
  • 456 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号