首页 > 解决方案 > 如何按第一次出现作为主要的熊猫分组

问题描述

我在下面有 csv

ID,PR_No,PMO,PRO,REV,COST
111,111,AB,MA,2575,2575
111,111,LL,NN,-1137,-1137
112,112,CD,KB,1134,3334
111,111,ZZ,YY,100,100

我的预期输出如下

ID,PR_No,PMO,PRO,REV,COST
111,111,AB,MA,1538,1538
112,112,CD,KB,1134,3334

对于 ID 111,有很多 PMO,PRO,但在输出中我们只需要首先粘贴 AB,MA 出现。

下面的代码需要修改什么

df_n = df.groupby(['ID','PR_No','PMO','PRO'])['REV','COST'].sum()

还是我需要 df.groupby(['ID','PR_No'])['REV','COST'].sum() 稍后进行映射?

标签: pythonpandas

解决方案


GroupBy.agg由前 2 列使用,用于GroupBy.first接下来的 2 列:

d = {'PMO':'first','PRO':'first','REV':'sum','COST':'sum'}
df_n = df.groupby(['ID','PR_No'], as_index=False).agg(d)
print (df_n)
    ID  PR_No PMO PRO   REV  COST
0  111    111  AB  MA  1538  1538
1  112    112  CD  KB  1134  3334

推荐阅读