GroupBy objects expose a nunique
method of Series/DataFrame (and also for resample
it works), but Rolling does not:
In [89]: values = np.random.choice(np.arange(10), 100)
In [90]: s = pd.Series(values, index=pd.date_range("2019-01-01", freq='H', periods=100))
In [92]: s.groupby(pd.Grouper(freq='D')).nunique()
Out[92]:
2019-01-01 10
2019-01-02 8
2019-01-03 10
2019-01-04 10
2019-01-05 4
Freq: D, dtype: int64
vs
In [93]: s.rolling('D').apply(pd.Series.nunique, raw=False)
Out[93]:
2019-01-01 00:00:00 1.0
2019-01-01 01:00:00 2.0
2019-01-01 02:00:00 3.0
...
# or
In [95]: s.rolling('D').apply(lambda x: len(pd.unique(x)), raw=True)
Out[95]:
2019-01-01 00:00:00 1.0
2019-01-01 01:00:00 2.0
2019-01-01 02:00:00 3.0
...
I think it would be nice to also have this method available on rolling
objects.
Comment From: snitish
take