我有一个熊猫数据框:
交易编号 | 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