Pandas: как присвоить значение первой строке группы после groupby?

#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