2016-12-09 5 views
0

Мне нужно перевести этот запрос SQL в Python:Панды: Как применить GroupBy с as_index = Ложные

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 

ли кто-нибудь знает способ переименовать VAR1 внутри GroupBy? благодаря

ответ

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 
Смежные вопросы