计算具有重复日期的滚动窗口唯一值pandas
如果我有一个像这样的 pandas DataFrame
date | person_active |
---|---|
22/2 | John |
22/2 | Marie |
22/2 | Mark |
23/2 | John |
24/2 | Mark |
24/2 | Marie |
我如何根据时间在滚动窗口中计算 < 中的唯一值code>person_active,例如:2 天滚动窗口,因此最终结果如下:
date | person_active | people_active |
---|---|---|
22/2 | John | 3 |
22/2 | 玛丽 | 3 |
22/2 | 马克 | 3 |
23/2 | 约翰 | 3 |
24/2 | 马克 | 3 |
24/2 | 玛丽 | 3 |
这里的主要问题是我在每个人的日期
上有重复的条目,所以一个简单的df.rolling('2d',on='date').count()
不会完成这项工作。
编辑:请考虑在大数据集中的实现以及计算时间如何扩展,该解决方案需要理想地适用于现实环境,因此如果计算时间太长,它就没那么有用。
If I have a pandas DataFrame like this
date | person_active |
---|---|
22/2 | John |
22/2 | Marie |
22/2 | Mark |
23/2 | John |
24/2 | Mark |
24/2 | Marie |
how do I count in a rolling window based on time the unique values in person_active
, for example: 2 days rolling window, so it ends up like this:
date | person_active | people_active |
---|---|---|
22/2 | John | 3 |
22/2 | Marie | 3 |
22/2 | Mark | 3 |
23/2 | John | 3 |
24/2 | Mark | 3 |
24/2 | Marie | 3 |
The main issue here is that I have duplicate entries on date
for each person so a simple df.rolling('2d',on='date').count()
won't do the job.
EDIT: Please consider implementation in a big dataset and how the time to compute will scale, the solution needs to be ideally applicable in a real-world environment so if it takes too long to compute it's not that useful.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
IIUC,尝试:
IIUC, try:
按日期分组,计算唯一值,然后就可以开始了:
Group by date, count unique values and then you're good to go: