Python Groupby错误:Grouper和axis的长度必须相同

Python Groupby错误:Grouper和axis的长度必须相同,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有下面的csv ID,PR_No,PMO,PRO,REV,COST 111,111,AB,MA,2575,2575 111,111,AB,MA,-1137,-1137 112,112,CD,KB,1134,3334 111,111,AB,MA,100,100 输出如下 ID,PR_No,PMO,PRO,REV,COST 111,111,AB,MA,1538,1538 112,112,CD,KB,1134,3334 1538=2575-1137+100 我的代码抛出值错误 df_n = df

我有下面的csv

ID,PR_No,PMO,PRO,REV,COST
111,111,AB,MA,2575,2575
111,111,AB,MA,-1137,-1137
112,112,CD,KB,1134,3334
111,111,AB,MA,100,100
输出如下

ID,PR_No,PMO,PRO,REV,COST
111,111,AB,MA,1538,1538
112,112,CD,KB,1134,3334
1538=2575-1137+100

我的代码抛出值错误

df_n = df.groupby([['ID','PR_No','PMO','PRO']]).agg({'REV':sum,'COST':sum})

删除列名称列表的嵌套
[]

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
因为可以使用相同的聚合函数在groupby之后使用
.sum
创建列表:

df_n = df.groupby(['ID','PR_No','PMO','PRO'])['REV','COST'].sum()

ValueError:Grouper和axis的长度必须相同

这是什么意思

如果使用样本数据运行,则会正常工作,因为嵌套列表的长度与样本数据的长度相同:

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
如果创建具有重复项的列表,则它将聚合样本数据:

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)
打印(df)
ID PR_无PMO专业修订成本
0 111 111毫安2575 2575
111111 AB MA-1137-1137
2 112 CD KB 1134 3334
311111 AB MA 100 100

4 111 111 AB MA 100 100尝试使用一些agg或求和函数,它将起作用

df_n = df.groupby([......])[....].sum()