我有一个熊猫数据框,其中包含字符串值和日期时间索引,如下所示:
from datetime import datetime as dt
import pandas as pd
df = pd.DataFrame(['a', 'b', 'b', 'c', 'b', 'b', 'b'],
[dt(2019, 1, 1), dt(2019, 1, 2),
dt(2019, 1, 3), dt(2019, 1, 4),
dt(2019, 1, 5), dt(2019, 1, 6),
dt(2019, 1, 7)])
如果我想计算每个值始终出现的实例数,我可以简单地调用:
>>> print(df[0].value_counts())
b 5
c 1
a 1
Name: 0, dtype: int64
我想创建一个滚动窗口,并在例如2天的移动窗口上测量每个字符串的实例数。有没有办法将rolling
与value_counts
或类似的东西组合在一起?
答案 0 :(得分:5)
我想您正在寻找的是
pd.get_dummies(df[0]).rolling('2D').sum()
输出:
a b c
2019-01-01 1.0 0.0 0.0
2019-01-02 1.0 1.0 0.0
2019-01-03 0.0 2.0 0.0
2019-01-04 0.0 1.0 1.0
2019-01-05 0.0 1.0 1.0
2019-01-06 0.0 2.0 0.0
2019-01-07 0.0 2.0 0.0