将数据框中的选定数据分组 pandas

Group selected data from dataframe pandas

我有一个数据框,看起来像这样:

   CARD     CALL        COD_DAY
0   5713    0.0         20200716
1   5713    1.0         20200811
2   5713    2.0         20200620
3   5713    3.0         20200619
4   5713    4.0         20200601
... ... ... ...
2135283 73306036    0.0     20200930
2135284 73306055    12.0    20200930
2135285 73306479    9.0     20200930
2135286 73306656    3.0     20200930
2135287 73306676    1.0     20200930

我只想 select 具有最高 COD_DAY 且 CALL 大于零的 CARD。 我用 groupby 尝试了几种方法,但没有得到积极的结果。

非常感谢任何帮助!

我认为您需要先通过 boolean indexing with Series.gt and then get rows with maximum COD_DAY per CARD by DataFrameGroupBy.idxmax for indices and last pass to DataFrame.loc:

过滤正值
df = df.loc[df[df['CALL'].gt(0)].groupby('CARD')['COD_DAY'].idxmax()]
print (df)
             CARD  CALL   COD_DAY
1            5713   1.0  20200811
2135284  73306055  12.0  20200930
2135285  73306479   9.0  20200930
2135286  73306656   3.0  20200930
2135287  73306676   1.0  20200930

如果不是每组需要一张卡:

card = df.loc[df.loc[df['CALL'].gt(0), 'COD_DAY'].idxmax(), 'CARD']
print (card)
73306055