Pandas DataFrame Groupby и реформинг - PullRequest
0 голосов
/ 25 августа 2018

У меня есть вопрос об использовании groupby () со следующим сокращенным примером pandas dataframe.Здесь я пытаюсь добиться суммирования значения «количество» за «дату» для каждого «store_id» с сохранением столбцов «days_of_week» и «holiday».

    store_id    date        amount  days_of_week    holiday
0   0           2017-11-14  100     1               0
1   0           2017-11-14  -100    1               0
2   1           2017-11-14  122     1               0
3   1           2017-11-19  55      6               1
4   2           2017-11-19  11      6               1
5   2           2017-11-19  32      6               1

Итак, результатдолжно выглядеть следующим образом.

    store_id    date        amount  days_of_week    holiday
0   0           2017-11-14  0       1               0
1   1           2017-11-14  122     1               0
2   1           2017-11-19  55      6               1
3   2           2017-11-19  43      6               1

Я попытался удалить столбцы 'day_of_week' и 'holiday', а затем с помощью groupby () получить сумму за каждую дату.Но это далеко от достижения желаемой формы результата.

train = train.drop(columns=['days_of_week', 'holiday'])
train.groupby(['store_id', 'date'])['amount'].sum()

Есть ли другие способы, о которых я не подозреваю, чтобы легко получить форму второго примера?

1 Ответ

0 голосов
/ 25 августа 2018

Этого можно добиться с помощью функции агрегирования panda.см. https://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.DataFrameGroupBy.agg.html

Следующий код должен работать для вашего случая

df_sum = df.groupby(['date','store_id']).agg({'amount':'sum', 'days_of_week': 'first', 'holiday': 'first' }).reset_index()
print(df_sum)

        date  store_id  amount days_of_week  holiday
0 2017-11-14         0     0.0            1        0
1 2017-11-14         1   122.0            1        0
2 2017-11-19         1    55.0            6        1
3 2017-11-19         2    43.0            6        1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...