我们说我有一个看起来像这样的数据框
A B C
x xy 6
x xz 7
x xa 12
y ya 2
y yb 45
z zc 4
我想重组它,以便它给我A的总数,然后给我A中的最大值,例如:
A B C D
x 25 xa 12
y 47 yb 45
z 4 zc 4
基本上,这样做是在A中按组进行总计,然后将其放在B中..它找到A中最大的实体,并将其与D中的实体编号放在一起。
我如何组织数据框来执行此功能?
答案 0 :(得分:4)
最简单的方法
df.set_index('B').groupby('A').C.agg(['sum', 'idxmax', 'max'])
sum idxmax max
A
x 25 xa 12
y 47 yb 45
z 4 zc 4
如果要将列重命名为'A', 'B', 'C', 'D'
df.set_index('B').groupby('A').C.agg(['sum', 'idxmax', 'max']) \
.rename(columns=dict(sum='B', idxmax='C', max='D')).reset_index()
A B C D
0 x 25 xa 12
1 y 47 yb 45
2 z 4 zc 4
答案 1 :(得分:2)
您可以使用:
s = df.groupby('A')['C'].sum().rename('B')
df = df.loc[df.groupby('A')['C'].idxmax()].rename(columns={'B':'C','C':'D'})
df = df.join(s, on='A').sort_index(axis=1)
print (df)
A B C D
2 x 25 xa 12
4 y 47 yb 45
5 z 4 zc 4