首页 > 解决方案 > Pandas 带有 Group By 的多重条件均值

问题描述

python 和 pandas 的新手。我有一个带有客户数据列表的 pandas DataFrame,其中包括客户名称、报告月份和绩效。我正在尝试为每个客户获得第一次录制的性能

  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

标签: python-3.xpandaspandas-groupby

解决方案


DataFrame.sort_valuesGroupBy.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

如果它已经排序,则不需要再次排序


推荐阅读