Как добавить среднее значение для каждой записи той же категории в Pandas? - PullRequest
1 голос
/ 28 апреля 2020

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

У меня есть столбец zip_reg, который является категоричным и содержит около 106 различных значений, мой набор данных имеет около 150 тыс. Записей, с другой стороны, у меня есть числовая функция «сумма», которую я буду sh вычислять среднее значение для каждой записи того же класса, вот пример:

zip_reg     amount
A           100
B           200
B           100
C           100
C           150
C           150

Для класса A у нас есть среднее значение 100, для класса B у нас есть среднее значение (300/2 = 150) и для класса C у нас есть среднее значение 200, я sh добавлю новый столбец mean_amount, чтобы поместить среднее количество каждой записи из той же категории, ie:

zip_reg     amount    mean_amount
A           100       100
B           200       150
B           100       150
C           100       200
C           150       200
C           150       200

I использовал groupby.mean(), чтобы получить среднее значение для каждого класса, но как я могу добавить столбец, чтобы каждая запись элегантным образом представляла собой среднее значение своего класса без написания целой функции?

1 Ответ

1 голос
/ 28 апреля 2020

IIU C, вам нужно groupby.transform с mean

df['mean_amount'] = df.groupby('zip_reg')['amount'].transform('mean')

print (df)
  zip_reg  amount  mean_amount
0       A     100   100.000000
1       B     200   150.000000
2       B     100   150.000000
3       C     100   133.333333
4       C     150   133.333333
5       C     150   133.333333
...