Pandas在一列上进行分组,在另一列上进行最大日期分组 python[英] Pandas group by on one column with max date on another column python

本文是小编为大家收集整理的关于Pandas在一列上进行分组,在另一列上进行最大日期分组 python的处理方法,想解了Pandas在一列上进行分组,在另一列上进行最大日期分组 python的问题怎么解决?Pandas在一列上进行分组,在另一列上进行最大日期分组 python问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个包含以下数据的数据框:

invoice_no  dealer  billing_change_previous_month        date
       110       1                              0  2016-12-31
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30
      5635       2                          58730  2016-12-31

我希望只有一个经销商的最大日期.所需的输出应该是这样的:

invoice_no  dealer  billing_change_previous_month        date
       100       1                         -41981  2017-01-30
      5505       2                              0  2017-01-30

每个经销商的最大日期应该是不同的,提前感谢您的帮助.

推荐答案

您可以使用 groupby 和 transform 使用布尔索引

df_new = df[df.groupby('dealer').date.transform('max') == df['date']]

    invoice_no  dealer  billing_change_previous_month   date
1   100         1       -41981                          2017-01-30
2   5505        2       0                               2017-01-30

如果有两个以上的经销商,

df = pd.DataFrame({'invoice_no':[110,100,5505,5635,10000,10001], 'dealer':[1,1,2,2,3,3],'billing_change_previous_month':[0,-41981,0,58730,9000,100], 'date':['2016-12-31','2017-01-30','2017-01-30','2016-12-31', '2019-12-31', '2020-01-31']})

df['date'] = pd.to_datetime(df['date'])
df[df.groupby('dealer').date.transform('max') == df['date']]


    invoice_no  dealer  billing_change_previous_month   date
1   100         1       -41981                          2017-01-30
2   5505        2       0                               2017-01-30
5   10001       3       100                             2020-01-31

本文地址:https://www.itbaoku.cn/post/1727853.html