【发布时间】:2021-06-05 13:19:45
【问题描述】:
我有一个这样的数据框
| count | A | B | Total |
|---|---|---|---|
| yes | 4900 | 0 | 0 |
| yes | 1000 | 1000 | 0 |
| sum_yes | 5900 | 1000 | 0 |
| yes | 4000 | 0 | 0 |
| yes | 1000 | 0 | 0 |
| sum_yes | 5000 | 0 | 0 |
我想要这样的结果,即仅针对 'count' = 'sum_yes' 如果 B 的值 =0 的行计算 A 列和 B 列的最大值,否则计算最小值
| count | A | B | Total |
|---|---|---|---|
| yes | 4900 | 0 | 0 |
| yes | 1000 | 1000 | 0 |
| sum_yes | 5900 | 1000 | 1000 |
| yes | 4000 | 0 | 0 |
| yes | 1000 | 0 | 0 |
| sum_yes | 5000 | 0 | 5000 |
到目前为止我已经尝试过了:
df['Total'] = [df[['A', 'B']].where(df['count'] == 'sum_yes').max(axis=0) if
'B'==0 else df[['A', 'B']]
.where(df['count'] == 'sum_yes').min(axis=0)]
但是我得到 ValueError Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
知道如何解决这个问题
【问题讨论】:
-
第一个计数行中“sum_yes”的总数应为 1000,即 min(5900, 1000) 但您显示为 0。
-
是的,你是对的,更正了值
标签: python pandas dataframe min