Я пытаюсь создать общий столбец, который суммирует числа из другого столбца на основе третьего столбца. Я могу сделать это, используя .groupby()
, но это создает усеченный столбец, тогда как я хочу, чтобы столбец имел одинаковую длину.Pandas - создать общий столбец на основе другого столбца
Мой код:
df = pd.DataFrame({'a':[1,2,2,3,3,3], 'b':[1,2,3,4,5,6]})
df['total'] = df.groupby(['a']).sum().reset_index()['b']
Мой результат:
a b total
0 1 1 1.0
1 2 2 5.0
2 2 3 15.0
3 3 4 NaN
4 3 5 NaN
5 3 6 NaN
Мой желаемый результат:
a b total
0 1 1 1.0
1 2 2 5.0
2 2 3 5.0
3 3 4 15.0
4 3 5 15.0
5 3 6 15.0
... где каждый 'a'
столбец имеет ту же сумму, как и другие.
не совсем уверен, почему, но это работает как шарм. Спасибо! – pshep123
Рад, что это работает для вас! Документация (просто добавила ссылку на нее в моем ответе) говорит, что 'transform' создает столбец« как индексированный »в исходный фрейм данных. Это означает, что он имеет ту же длину, что и исходный кадр данных, и это не только уникальные элементы индекса. – 3novak