Создать словарь имен столбцов с агрегатными функциями и перейти к agg
, также здесь необходимо от min_count=1
до sum
для избежания 0
для суммы NaN
s значений:
L = ['C','D','E','F','G']
d = {**dict.fromkeys(L, lambda x: x.sum(min_count=1)), **{'A':'first'}}
df = df.groupby('B', as_index=False, sort=False).agg(d).reindex(columns=df.columns)
print (df)
A B C D E F G
0 box1 0487 1.0 1.0 1.0 1.0 1.0
1 blue 0478 2.0 2.0 2.0 2.0 2.0
2 flat 8704 1.0 1.0 1.0 NaN 2.0
3 dark 8740 1.0 1.0 1.0 1.0 1.0
4 late 4087 1.0 NaN 1.0 NaN 1.0
d = {**dict.fromkeys(L, 'sum'), **{'A':'first'}}
df = df.groupby('B', as_index=False, sort=False).agg(d).reindex(columns=df.columns)
print (df)
A B C D E F G
0 box1 0487 1.0 1.0 1.0 1.0 1.0
1 blue 0478 2.0 2.0 2.0 2.0 2.0
2 flat 8704 1.0 1.0 1.0 0.0 2.0
3 dark 8740 1.0 1.0 1.0 1.0 1.0
4 late 4087 1.0 0.0 1.0 0.0 1.0