Суммируйте определенные значения между строками

1

У меня есть кадр данных из 370000 строк х 340 столбцов, в этом DataFrame у меня смешанные числовые и нечисловые значения между столбцами.

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

Таблица:

user_id          points    gender    age
11111              10000      male    18
 2222               4200    female    33
11111              30000      male    18
 2222                 10    female    33
11111              20000      male    18

Я ожидал бы этого результата:

user_id          points    gender     age
11111              60000      male     18
2222                4210      female   33

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

Теги:
pandas

2 ответа

3

Вы хотите сгруппировать свой исходный DataFrame помощью 'user_id'. Затем вы можете объединить сгруппированный фрейм и указать словарь, для которого функция должна использоваться для каждого столбца.

df.groupby('user_id').agg({'points': 'sum', 
                           'gender': 'first', 
                           'age': 'first'}).reset_index()

Выходы:

   user_id  points  gender  age
0     2222    4210  female   33
1    11111   60000    male   18

Сначала будет работать до тех пор, пока в столбцах, где вы хотите "сохранить" значение, есть только одно уникальное значение. В противном случае реализуйте режим, чтобы сохранить наиболее распространенное значение или "уникальный", чтобы получить список всех значений.

1

Эй, вы можете сделать это, используя pandas aggregate sum

лайк

df.groupby(['user_id'])[["points"]].sum()

df.groupby(['user_id'])[["list_of_attribute"]].sum()

А также можно передать несколько columns в list_of_attributes но это должно было бы subset столбцов иначе KeyError.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню