首页 > 解决方案 > 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()。

标签: pythonpandas

解决方案


使用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 的真值语句


推荐阅读