python和pandas的新手。我有一个熊猫数据框架,其中包含客户数据列表,其中包括客户名称,报告月份和绩效。我正在尝试获得每个客户的第一笔业绩记录
CustomerName ReportingMonth Performance
0 7CGC 2019-12-01 1.175000
1 7CGC 2020-01-01 1.125000
2 ACC 2019-11-01 1.216802
3 ACBH 2019-05-01 0.916667
4 ACBH 2019-06-01 0.893333
5 AKC 2019-10-01 4.163636
6 AKC 2019-11-01 3.915215
所需的输出
CustomerName ReportingMonth Performance
0 7CGC 2019-12-01 1.175000
1 ACC 2019-11-01 1.216802
2 ACBH 2019-05-01 0.916667
3 AKC 2019-10-01 4.163636
答案 0 :(得分:1)
将DataFrame.sort_values
与GroupBy.first
或DataFrame.drop_duplicates
结合使用:
df.sort_values('ReportingMonth').groupby('CustomerName', as_index=False).first()
或
new_df = df.sort_values('ReportingMonth').drop_duplicates('CustomerName',
keep = 'first')
print(new_df)
输出
CustomerName ReportingMonth Performance
3 ACBH 2019-05-01 0.916667
5 AKC 2019-10-01 4.163636
2 ACC 2019-11-01 1.216802
0 7CGC 2019-12-01 1.175000
如果已经排序,则无需再次排序