groupby sum () не суммируется, а показывает странные результаты - PullRequest
0 голосов
/ 31 октября 2019

У меня есть набор данных, который я пытаюсь агрегировать по идентификатору пользователя. Мне нужно рассчитать сумму заказов для каждого пользователя.

ID  ORDER
abc 1
bcd 1
ced 1
dfd 1
bcd 1
ced 1
bcd 1
bcd 1

Это набор данных

Это код, который я использовал

TotalOrders=PL_training.groupby('ID').GR_ORDERS.sum().reset_index()
TotalOrders.columns=['ID','TotalOrders']

Вместо добавлениякод просто накапливает значения в одну строку. Я знаю, что суммируется функция суммирования, но не уверен, почему это не работает. Удивительно, но я использовал тот же код для добавления других столбцов и работает отлично.

Результат

abc 1
bcd 1111
ced 11
dfd 1

Ожидаемый результат

abc 1
bcd 4
ced 2
dfd 1

Пожалуйста, помогите мнепонять, что происходит не так. Спасибо

1 Ответ

2 голосов
/ 31 октября 2019

Используйте Series.astype для преобразования в int перед групповым и суммой :

new_df=df.copy()
new_df['ORDER']=new_df['ORDER'].astype(int)
new_df.groupby('ID')['ORDER'].sum()

или

df.groupby('ID')['ORDER'].apply(lambda x: x.astype(int).sum())

ID
abc    1
bcd    4
ced    2
dfd    1
Name: ORDER, dtype: int64
...