gpt4 book ai didi

python - Pandas 上的 SQL "GROUP BY HAVING"相当于什么?

转载 作者:IT老高 更新时间:2023-10-28 22:04:07 31 4
gpt4 key购买 nike

使用 groupby 并在 pandas 中并行应用过滤器的最有效方法是什么?

基本上我要求的是 SQL 中的等价物

select *
...
group by col_name
having condition

我认为有很多用例,包括条件均值、总和、条件概率等,这将使这样的命令非常强大。

我需要一个非常好的性能,所以理想情况下这样的命令不会是在 python 中完成的几个分层操作的结果。

最佳答案

正如 unutbu 的评论中提到的,groupby's filter相当于 SQL 的 HAVING:

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

注意:potentially there is a bug在哪里你不能写你的函数来处理你用来分组的列...一种解决方法是手动分组列,即 g = df.groupby(df['A'])).

关于python - Pandas 上的 SQL "GROUP BY HAVING"相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105452/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com