1
我經常使用DatetimeIndex.date,特別是在groupby方法中。但是,與DatetimeIndex.year/month/day相比,DatetimeIndex.date較慢。據我所知,這是因爲.date屬性在索引上使用lambda函數並返回datetime有序索引,而index.year/month/day只返回整數索引。我已經執行好一點,並會加快一些我的代碼(至少對發現在GROUPBY值)的一個小例子功能,但我覺得必須有一個更好的辦法:是否有一種更有效和優雅的方式來過濾按時間排列的熊貓指數?
In [217]: index = pd.date_range('2011-01-01', periods=100000, freq='h')
In [218]: data = np.random.rand(len(index))
In [219]: df = pd.DataFrame({'data':data},index)
In [220]: def func(df):
...: groupby = df.groupby([df.index.year, df.index.month, df.index.day]).mean()
...: index = pd.date_range(df.index[0], periods = len(groupby), freq='D')
...: groupby.index = index
...: return groupby
...:
In [221]: df.groupby(df.index.date).mean().equals(func(df))
Out[221]: True
In [222]: df.groupby(df.index.date).mean().index.equals(func(df).index)
Out[222]: True
In [223]: %timeit df.groupby(df.index.date).mean()
1 loop, best of 3: 1.32 s per loop
In [224]: %timeit func(df)
10 loops, best of 3: 89.2 ms per loop
熊貓/索引是否具有我找不到的類似功能?
' df.groupby(df.index.strftime( '%Y%米%d'))。平均()'? – piRSquared
@piRSquared,增加了相應的時間... – MaxU
@MaxU完美!非常感謝! – VolkrB