我有一个包含以下数据的数据框:
发票\u无经销商账单\u变更\u上月日期
110 1 0 2016-12-31
100 1 -41981 2017-01-30
5505 2 0 2017-01-30
5635 2 58730 2016-12-31
我只希望有一个经销商的最长日期。所需的输出应如下所示:
发票\u无经销商账单\u变更\u上月日期
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']
发票\u无经销商账单\u变更\u上月日期
1 100 1 -41981 2017-01-30
2 5505 2 0 2017-01-30
即使有两个以上的经销商(解决Ben Smith提出的问题),该解决方案也能按预期工作
df=pd.DataFrame({‘发票编号’:[11010055055635100000001],‘经销商’:[1,1,2,2,3,3],‘账单变更’:[0,-41981,0587309000100],‘日期’:[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']]
发票\u无经销商账单\u变更\u上月日期
1 100 1 -41981 2017-01-30
2 5505 2 0 2017-01-30
5 10001 3 100 2020-01-31