如何格式化数据框看起来像这样?

时间:2017-08-08 19:41:50

标签: python pandas dataframe

我们说我有一个看起来像这样的数据框

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中的实体编号放在一起。

我如何组织数据框来执行此功能?

2 个答案:

答案 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