SELECT uid, pdd_id, sum(if(a > 0, 1, 0)) as sum_0, sum(1) as sum_all from t,帮我把这段sql翻译成pandas的语法
时间: 2024-02-17 13:05:28 浏览: 16
可以使用pandas库中的DataFrame.groupby()方法对数据进行分组,并使用DataFrame.agg()方法进行聚合计算。
示例代码如下:
```python
import pandas as pd
# 创建示例数据
df = pd.DataFrame({'uid': [1, 1, 2, 2, 3, 3],
'pdd_id': ['a', 'b', 'a', 'c', 'b', 'c'],
'a': [1, 0, 1, 1, 0, 1]})
# 按照'uid'列和'pdd_id'列进行分组,并统计每组中'a'列大于0的个数和总数
grouped = df.groupby(['uid', 'pdd_id']).agg(sum_0=('a', lambda x: sum(x > 0)),
sum_all=('a', 'count'))
# 打印结果
print(grouped)
```
输出结果如下:
```
sum_0 sum_all
uid pdd_id
1 a 1 1
b 0 1
2 a 1 1
c 1 1
3 b 0 1
c 1 1
```
其中,agg()方法的参数是一个字典,键为聚合后的列名,值为对应的聚合函数。在本例中,使用lambda表达式定义了一个匿名函数,用于计算'a'列大于0的个数,也可以直接使用内置的sum()函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)