基于条件的聚合子组值--如果子组中的所有值相同,则取最大值,如果其中任何值不同,则求和。例:数据

预期产出:

发布于 2021-10-08 20:24:07
使用groupby_apply和逻辑条件获取sum或max值:
>>> df.groupby(['index', 'columns'], as_index=False)['values'] \
.apply(lambda x: x.sum() if len(set(x)) != 1 else x.max())[df.columns]
index values columns
0 1 80 A
1 1 13 B
2 2 30 A
3 2 20 Bhttps://stackoverflow.com/questions/69500410
复制相似问题