集团通过没有聚合函数

问题描述:

我见过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)从哪里来? –

看起来你正在寻找的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.