python - 分组数据帧上唯一值的滚动计数
问题描述
我正在尝试根据包含销售日期、产品和客户 ID 的销售数据计算每个产品在滚动窗口(2 天)内的唯一客户数量。数据如下所示:
Date Product Customer
20200101 A '101'
20200101 B '101'
20200101 A '102'
20200102 A '101'
20200102 B '103'
20200103 A '101'
20200103 B '102'
20200104 B '101'
20200104 A '103'
20200104 B '103'
20200105 A '102'
20200105 A '101'
理想的输出应该与此类似,其中值是 2 天窗口内的唯一客户数量:
A B
20200102 2 2
20200103 1 2
20200104 2 3
20200105 3 2
我希望像
df.groupby([pandas.Grouper(key='Date', freq='D'), 'Product'])['Customer'].rolling('2D', on='Date').nunique()
会工作,但开始我得到以下错误:
ValueError: invalid on specified as Date, must be a column (of DataFrame), an Index or None
而且我现在nunique()
也不能与rolling
. 但是,我在回答这个问题时使用了这种方法,但恐怕它在计算上不会很好地扩展。我的数据集有大约 1000 万行销售信息,在仅对总数据的十分之一进行测试时,链接的解决方案需要我大约 10 分钟才能运行。有什么提示可以提供更有效的解决方案吗?
非常感谢!
解决方案
推荐阅读
- python - 显示一维形状的二维 numpy ndarray
- python - psycopg2.DataError:整数的输入语法无效:“” WHERE Toys.toy_id = ' '
- scala - Scala - 用随机数填充 Seq,没有重复,并且始终具有相同的大小
- javascript - 使用 React 和 Ant Design 的浮动标签
- python - 如何将多级索引转换为 Python 中的列。(IndexError:不能从空轴中进行非空拍摄。)
- python - 通过输入获取半径的程序找到表面积和体积
- blockchain - 在面向客户端的应用程序中使用 web3 库是否安全?
- r - 将数据加载到 R 中的最佳文件类型(速度方面)?
- nginx - Rundeck 与 nginx 上的其他站点,其他站点是 php
- python - 激活后虚拟环境没有影响