Звучит так, будто вы ищете groupby :
import pandas as pd
import numpy as np
df = pd.DataFrame(
data={'Name' : ['Kelly', 'Kelly', 'Kelly', 'John', 'John'],
'col1' : [400, np.nan, np.nan, np.nan, np.nan],
'col2' : [np.nan, 200, np.nan, 2, np.nan],
'col3' : [np.nan, np.nan, 500, -7, np.nan],
'col4' : [20, np.nan, np.nan, np.nan, 10],})
print (df)
Name col1 col2 col3 col4
0 Kelly 400.0 NaN NaN 20.0
1 Kelly NaN 200.0 NaN NaN
2 Kelly NaN NaN 500.0 NaN
3 John NaN 2.0 -7.0 NaN
4 John NaN NaN NaN 10.0
print(df.groupby('Name').sum())
Вывод:
col1 col2 col3 col4
Name
John 0.0 2.0 -7.0 10.0
Kelly 400.0 200.0 500.0 20.0
Редактировать : Если вы получаете только сумму первого столбца, тогда ваши типы данных для других столбцов могут быть не числовыми. Если вы примените groupby ко всему фрейму данных, в каждом столбце будет результат аггфункции. Попробуйте использовать df.info (), чтобы увидеть, какие типы данных используются в ваших столбцах.