Pandas:TimeGrouper文档在哪里?

34

我经常使用 Pandas ,它非常好用。我也使用 TimeGrouper,它也很好用。但我不知道有没有关于 TimeGrouper 的文档。你知道在哪里可以找到吗?

谢谢!

2个回答

47

pd.TimeGrouper()在pandas v0.21.0中已经正式弃用,建议使用pd.Grouper()

最佳使用方式是在groupby()中与非日期时间列一起分组。如果只需要按频率分组,请使用resample()

例如,假设你有:

>>> import pandas as pd
>>> import numpy as np
>>> np.random.seed(444)

>>> df = pd.DataFrame({'a': np.random.choice(['x', 'y'], size=50),
                       'b': np.random.rand(50)},
                      index=pd.date_range('2010', periods=50))
>>> df.head()
            a         b
2010-01-01  y  0.959568
2010-01-02  x  0.784837
2010-01-03  y  0.745148
2010-01-04  x  0.965686
2010-01-05  y  0.654552

你可以做到:

你可以做:

>>> # `a` is dropped because it is non-numeric
>>> df.groupby(pd.Grouper(freq='M')).sum()
                  b
2010-01-31  18.5123
2010-02-28   7.7670

但是上面的代码有点多余,因为你只是在索引上进行分组。相反,你可以这样做:

>>> df.resample('M').sum()
                    b
2010-01-31  16.168086
2010-02-28   9.433712

以产生相同的结果。

相反,这里是一个使用 Grouper() 会很有用的案例:

>>> df.groupby([pd.Grouper(freq='M'), 'a']).sum()
                   b
           a        
2010-01-31 x  8.9452
           y  9.5671
2010-02-28 x  4.2522
           y  3.5148

如需更多详细信息,请参阅Ted Petrou的Pandas Cookbook第7章。


1
我还能像 df.groupby([pd.Grouper(freq='M'), 'brad']).mean() 这样做吗? - ℕʘʘḆḽḘ

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接