У меня есть кадр данных из 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, но я новичок в пандах, которые пытаются найти правильный способ сделать это, будут благодарны за любые советы.
Вы хотите сгруппировать свой исходный 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
Сначала будет работать до тех пор, пока в столбцах, где вы хотите "сохранить" значение, есть только одно уникальное значение. В противном случае реализуйте режим, чтобы сохранить наиболее распространенное значение или "уникальный", чтобы получить список всех значений.
Эй, вы можете сделать это, используя pandas aggregate sum
лайк
df.groupby(['user_id'])[["points"]].sum()
df.groupby(['user_id'])[["list_of_attribute"]].sum()
А также можно передать несколько columns
в list_of_attributes
но это должно было бы subset
столбцов иначе KeyError
.