熊猫:如何使用as_index = False应用groupby

时间:2016-12-09 16:22:06

标签: pandas group-by

我需要在python中翻译这个sql查询:

SELECT VAR1, COUNT (VAR1) AS LINES, MAX(VAR2) 
FROM DF
GROUP BY VAR1

我需要将var1作为列(as_index = False)。问题是我无法重命名COUNT(*)函数。所以我唯一能做的就是:

DF=DF.groupby('VAR1',as_index=False).agg({'VAR1':np.size,'VAR"':np.max})

但显然我得到了这个错误:

ValueError: cannot insert VAR1, already exists

有人知道在GROUPBY中重命名VAR1的方法吗? 感谢

1 个答案:

答案 0 :(得分:0)

我认为您可以使用rename_axis更改index名称,然后reset_index完美无缺:

DF = pd.DataFrame({'VAR1':[1,1,3],
                   'VAR':[4,5,6],
                   'C':[7,8,9],})

print (DF)
   C  VAR  VAR1
0  7    4     1
1  8    5     1
2  9    6     3

DF=DF.groupby('VAR1')
     .agg({'VAR1':np.size,'VAR':np.max})
     .rename_axis('New')
     .reset_index()
print (DF)
   New  VAR1  VAR
0    1     2    5
1    3     1    6