【问题标题】:Comparing two columns in pandas - error: The truth value of a Series is ambiguous比较 pandas 中的两列 - 错误:Series 的真值不明确
【发布时间】:2016-03-10 18:37:20
【问题描述】:

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

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

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

Series 的真值是模棱两可的。使用 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

有没有办法做到这一点?

【问题讨论】:

  • pandas 文档解释它here(当我用谷歌搜索错误时的第一个结果)并且有许多重复的问题/答案解释了为什么 Stack Overflow 上已经出现了错误。

标签: python if-statement pandas dataframe series


【解决方案1】:

你可以使用双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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2020-10-15
    • 2017-03-27
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    • 1970-01-01
    相关资源
    最近更新 更多