Pandas Несколько условных значений с группировкой по - PullRequest
1 голос
/ 31 марта 2020

Новый для 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

1 Ответ

1 голос
/ 31 марта 2020

Используйте 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

Если он уже отсортирован, сортировка не требуется

...