Удалить вложенный []
для списка имен столбцов:
df_n = df.groupby(['ID','PR_No','PMO','PRO']).agg({'REV':sum,'COST':sum})
print (df_n)
REV COST
ID PR_No PMO PRO
111 111 AB MA 1538 1538
112 112 CD KB 1134 3334
Поскольку такая же агрегатная функция возможна, создайте список после группировки с помощью .sum
:
df_n = df.groupby(['ID','PR_No','PMO','PRO'])['REV','COST'].sum()
ValueError: Grouper и ось должны быть одинаковой длины
Что это значит?
Если работать с образцами данных, это работает, потому что длина вложенного списка такая же, как длина примерные данные:
df_n = df.groupby([['ID','PR_No','PMO','PRO']]).agg({'REV':sum,'COST':sum})
print (df_n)
REV COST
ID 2575 2575
PMO 1134 3334
PRO 100 100
PR_No -1137 -1137
Если создать список с дубликатами, он агрегирует выборочные данные:
df_n = df.groupby([['ID','ID','PRO','PRO']]).agg({'REV':sum,'COST':sum})
print (df_n)
REV COST
ID 1438 1438
PRO 1234 3434
Но если длина отличается, это не удалось:
print (df)
ID PR_No PMO PRO REV COST
0 111 111 AB MA 2575 2575
1 111 111 AB MA -1137 -1137
2 112 112 CD KB 1134 3334
3 111 111 AB MA 100 100
4 111 111 AB MA 100 100 <- added new row
df_n = df.groupby([['ID','ID','PRO','PRO']]).agg({'REV':sum,'COST':sum})
print (df_n)
ValueError: Grouper и ось должны быть одинаковой длины