将数据框中的选定数据分组 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
我有一个数据框,看起来像这样:
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