Специальная фильтрация / группировка данных Pandas - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь сгруппировать pandas Dataframe по 2 столбцам, затем по другому столбцу, основываясь на самой последней дате и заканчивая суммированием значений в другом столбце.

Ниже приведен пример того, что я пытается сделать:

     CODE     BILL_NUM   AMOUNT    DATE
1    1232      320220      $5    01/16/20 
2    1232      320320      $5    01/19/20
3    1232      320220     -$1    01/20/20
4    1216      160120      $4    01/04/20
5    1216      160120      $4    02/07/20
6    1216      160220      $2    02/08/20
7    1216      160120     -$3    02/19/20

После того, как желаемая группировка / фильтрация вернется:

     CODE     BILL_NUM   AMOUNT    DATE
1    1232      320220      $4    01/20/20 
2    1232      320320      $5    01/19/20
3    1216      160120      $5    02/19/20
4    1216      160220      $2    02/08/20

1 Ответ

0 голосов
/ 01 апреля 2020

Мой сгенерированный фрейм данных; df1

enter image description here

Снять $, заключить в скобки и ввести в столбце AMOUNT

df1['AMOUNT'] = df1['AMOUNT'].str.replace('(', '-')
df1['AMOUNT'] = df1['AMOUNT'].str.replace(')', '')
df1['AMOUNT'] = df1['AMOUNT'].str.replace('$', '')
df1['AMOUNT'] = df1['AMOUNT'].astype(int)
df1

Привести ДАТУ к дате / времени

df1['DATE']=pd.to_datetime(df1['DATE'])

Группировка и агрегирование по нескольким столбцам

df1.groupby(['CODE','BILL_NUM']).agg({'DATE':'max','AMOUNT':'sum'}).reset_index()

Вывод

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...