In [11]: df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])
In [12]: df
Out[12]:
A B
0 1 2
1 1 3
2 5 6
In [13]: g = df.groupby('A') # GROUP BY A
In [14]: g.filter(lambda x: len(x) > 1) # HAVING COUNT(*) > 1
Out[14]:
A B
0 1 2
1 1 3
您可以编写更复杂的函数(这些函数应用于每个组),前提是它们返回一个简单的ol'bool:
In [15]: g.filter(lambda x: x['B'].sum() == 5)
Out[15]:
A B
0 1 2
1 1 3
如联合国大学的评论所述,groupby's filter相当于SQL具有:
您可以编写更复杂的函数(这些函数应用于每个组),前提是它们返回一个简单的ol'bool:
注意:potentially there is a bug在这里,您不能编写函数来对用于分组的列执行操作。。。解决方法是手动按列分组,即
g = df.groupby(df['A']))
。相关问题 更多 >
编程相关推荐