如何在 python 中执行 SQL 窗口函数?

问题描述 投票:0回答:0

我有一个熊猫数据框:

交易编号 customer_id 约会 公司 城市 状态 km_travelled price_charged 发生成本 保证金 支付模式 性别 年龄
10000011 29290 2016-01-08 粉色出租车 亚特兰大 GA 30.45 370.95 313.635 57.315 卡片 28
10000012 27703 2016-01-06 粉色出租车 亚特兰大 GA 28.62 358.52 334.854 23.666 卡片 27
10000013 28712 2016-01-02 粉色出租车 亚特兰大 GA 9.04 125.2 97.632 27.568 现金 53
10000014 28020 2016-01-07 粉色出租车 亚特兰大 GA 33.17 377.4 351.602 25.798 现金 23
10000015 27182 2016-01-03 粉色出租车 亚特兰大 GA 8.73 114.62 97.776 16.844 卡片 33

我想运行 SQL 查询:

SELECT
    company,
    date,
    COUNT(DISTINCT customer_id) OVER (PARTITION BY company ORDER BY date) AS unique_customer_count,
    AVG(margin) OVER (PARTITION BY company ORDER BY date) AS avg_margin

我尝试了很多东西。我尝试使用以下代码行,然后代码卡在计算 customer_id 列中唯一值的数量。

df.groupby('company').rolling()

我最后一次尝试是:

from pandasql import sqldf
pysqldf = lambda q: sqldf(q, globals())

q = """
SELECT
company,
date,
COUNT(DISTINCT customer_id) OVER (PARTITION BY company ORDER BY date) AS unique_customer_count,
AVG(margin) OVER (PARTITION BY company ORDER BY date) AS avg_margin
FROM
df
"""

df1 = pysqldf(q)
df1
sql pandas dataframe window-functions pandasql
© www.soinside.com 2019 - 2024. All rights reserved.