从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

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

任何帮助,非常感谢!

我认为您需要首先通过boolean indexingSeries.gt过滤正值,然后通过DataFrameGroupBy.idxmax为索引获得每个CARD最大COD_DAY的行,最后传递到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

最新更新