比较pandas中的两列 - 错误:系列的真值是不明确的

时间:2016-03-10 18:37:20

标签: python if-statement pandas dataframe series

我有一个名为m的数据框,它有三列abc。我想将列bac进行比较,并将值放入列d

a   b   c
1   5   7
2   7   8
3   1   9
4   8   6

但是当我在下面的代码中尝试这个时,我得到了错误

  

系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()

代码:

if m['b'] < m['a']:
    m['d'] = m['a']
elif m['d'] > m['c']:
    m['d'] = m['c'] 
else:
    m['d'] = m['b']
m

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

您可以使用双numpy.where

m['d'] = np.where(m['b'] < m['a'], m['a'], np.where(m['b'] > m['c'], m['c'], m['b']) )
print m    
   a  b  c  d
0  1  5  7  5
1  2  7  8  7
2  3  1  9  3
3  4  8  6  6