Приведенный ниже код пытается воспроизвести вопрос. Проблема может заключаться в NaN
или других недостающих значениях в столбцах Position
и / или College
.
Приведенные ниже ответы из двух методов группировки A
и B
из вопроса совпадают в этом пример.
Option # 1
и Option # 2
ответы ниже совпадают. Option # 3
не соответствует из-за NaN
.
Однако , как обсуждалось в комментариях, трудно точно знать, как выглядят данные в DataFrame, используемом в вопросе выше.
# Import libraries
import pandas as pd
# Create DataFrame
df = pd.DataFrame({
'Team':['A','A','B','A','B','C','C','B'],
'Salary':[1000,2000,300,5000,200,10000,12000,100],
'College':['c1','c1','c2','c1','c2','c3','c3','c2'],
'Position':[1,1,2,1,2,3,3,2],
'College2':['c1','c2','c1','c1','c2','c2','c1','c2'],
'Position2':[1,2,1,1,3,2,3,1],
'College3':['c1','c2','c1','c1','c2','c2','c1','c2'],
'Position3':[1,2,1,1,np.nan,2,3,1]
})
Метод: A
# Get groupby() sum
df.groupby(['Team'])['Salary'].sum()
Вывод
Team
A 8000
B 600
C 22000
Name: Salary, dtype: int64
Метод: B
Вариант №1 : Использование столбцов Position
и College
gb1 = df.groupby(['Team', 'Position','College'])['Salary'].sum().reset_index()
gb2 = gb1.groupby(['Team'])['Salary'].sum()
gb2
Вывод
Team
A 8000
B 600
C 22000
Name: Salary, dtype: int64
Вариант № 2 : Использование столбцов Position2
и College2
gb1 = df.groupby(['Team', 'Position2','College2'])['Salary'].sum().reset_index()
gb2 = gb1.groupby(['Team'])['Salary'].sum()
gb2
Вывод
Team
A 8000
B 600
C 22000
Name: Salary, dtype: int64
Вариант № 3 : Использование столбцов Position3
и College3
(с NaN)
gb1 = df.groupby(['Team', 'Position3','College3'])['Salary'].sum().reset_index()
gb2 = gb1.groupby(['Team'])['Salary'].sum()
gb2
Вывод:
Team
A 8000
B 400
C 22000
Name: Salary, dtype: int64