熊猫:汇总后每个组的计数器列

时间:2020-01-24 05:49:50

标签: python pandas

这里是熊猫和数据框的新功能! 初始数据框:

A 1238 100

A 1238 90

A 3784 200

A 3784 500

B 1222 274

B 1222 400

C 2747 800

C 1384 100

我需要输出为:(col C是col A和B分组数据的最小值,col B是分组数据的序列计数器):

A 1 90

A 2 200

B 1 274

C 1 800

C 2 100

帮助!

1 个答案:

答案 0 :(得分:1)

如果在输出中更像3列,则使用DataFrameGroupBy.idxmin来表示每组C的最小值的索引,并按DataFrame.loc进行填充:

df1 = df.loc[df.groupby(['A','B'], sort=False)['C'].idxmin()]

如果输出中只有3列,则汇总min

df1 = df.groupby(['A','B'], as_index=False, sort=False)['C'].min()

然后通过GroupBy.cumcount创建计数器列:

df1['B'] = df1.groupby('A').cumcount().add(1)
print (df1)
   A  B    C
1  A  1   90
2  A  2  200
4  B  1  274
6  C  1  800
7  C  2  100