2017-03-20 82 views
1

我見過pandasql這樣的查詢:集團通過沒有聚合函數

df = pd.DataFrame({'A': [1, 2, 2], 'B': [3, 4, 5]}) 
sqldf('select * from df group by A', locals()) 

這給:

A B 
0 1 3 
1 2 6 

我覺得很奇怪有一組由沒有聚合函數,但任何人都可以告訴我在聚集列上使用哪個函數來將多個值減少爲一個?

+0

按照ANSI標準,該SQL語句不正確,因爲非聚合列必須出現在「GROUP BY」子句中。 MySQL只是我知道的方言,它允許將其only_full_group_by模式設置爲關閉。也許這個模塊使用這種模式和/或方言。並且沒有直接函數會減少多個值,因爲「GROUP BY」運行不同的分組值來運行聚合。毫無疑問,這是熊貓'groupby()'的靈感。 – Parfait

+0

6(B1)從哪裏來? –

回答

0

看起來你正在尋找的GROUPBY方法是last()

df = pd.DataFrame({'A': [1, 2, 2], 'B': [3, 4, 5]}) 
df.groupby('A', as_index=False).last() 

輸出:

A B 
0 1 3 
1 2 5 

我說這個假設5是一個錯字(見上面我的評論)並且意思是6.