Изменение формы фрейма данных с сохранением категориальных переменных - PullRequest
0 голосов
/ 10 декабря 2018

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

User  Product  Gender  Age  Cost

1     1        M       25   10
1     2        M       25   12
1     3        M       25   14
1     4        M       25   15
2     2        F       19   29
2     4        F       19   14
2     6        F       19   17
2     8        F       19   30

Я хочу, чтобы он выглядел следующим образом:

User  Gender  Age   Cost

1     M        25   51   
2     F        19   90   

ВДругими словами, я хочу суммировать стоимость по UserID, сохраняя при этом остальные категориальные переменные в кадре данных.

Я попытался изменить данные, но при этом отбрасываются переменные пола и возраста, которые я хочу сохранить.

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

Пол и возрастные переменные одинаковы для разных пользователей.Что мне не хватает?

1 Ответ

0 голосов
/ 10 декабря 2018

Вам нужно groupby + agg:

df.groupby(['User','Gender']).agg({'Age':'first','Cost':'sum'}).reset_index()

   User Gender  Age  Cost
0     1      M   25    51
1     2      F   19    90

Или:

df.groupby(['User','Gender'], as_index=False).agg({'Age':'first','Cost':'sum'})
...