我有以下示例输入数据:
import pandas as pd
df = pd.DataFrame({'col1': ['x', 'y', 'z'], 'col2': [1, 2, 3], 'col3': ['a', 'a', 'b']})
我想按col3
进行排序和分组,同时在col1
中相应组的顶部交叉汇总,并获得以下输出:
col1 col2
0 a 3
1 x 1
2 y 2
3 b 3
4 z 3
我当然可以做的一部分:
df.sort_values(by=['col3']).groupby(by=['col3']).sum()
col2
col3
a 3
b 3
但是我不确定如何在col1
上交错组标签。
3条答案
按热度按时间pxy2qtax1#
对每个组的top1行使用自定义函数:
性能更高的解决方案是使用
GroupBy.ngroup
作为索引,按concat
聚合sum
和最后一个连接值,仅按mergesort
进行稳定排序:91zkwejq2#
关于:
输出:
olhwl3o23#
输出
或使用pandasql库