#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
Я пытался присвоить значение первой строке группы после groupby?
Ввод:
ID Num
Aa 100
Bb 200
Cc 300
Bb 400
Aa 500
Вывод:
ID Num Sum
Aa 100 600
Aa 500
Bb 200 600
Bb 400
Cc 300 300
Код:
base_df['Sum'] = base_df.groupby(['ID'])['Num'].transform('sum')
Однако этот код будет присваивать значение ‘Sum’ каждой строке в группе:
Мой вывод:
ID Num Sum
Aa 100 600
Aa 500 600
Bb 200 600
Bb 400 600
Cc 300 300
Ответ №1:
Вы можете назначить с помощью duplicated
:
s = df.groupby(['ID'])['Num'].transform('sum')
df.loc[~df.duplicated("ID"), "Sum"] = s
print (df)
ID Num Sum
0 Aa 100 600.0
1 Bb 200 600.0
2 Cc 300 300.0
3 Bb 400 NaN
4 Aa 500 NaN