我有以下DataFrame:
df = pd.DataFrame({
'Buyer': 'Carl Mark Carl Joe Joe Carl'.split(),
'Trades': [1,3,5,8,9,3],
'Date' : [
DT.datetime(2013,1,1,13,0),
DT.datetime(2013,1,1,13,5),
DT.datetime(2013,1,1,20,0),
DT.datetime(2013,1,2,10,0),
DT.datetime(2013,1,2,12,0),
DT.datetime(2013,1,2,14,0),
]})
现在我想按天分组并计算每个交易者的平均交易数量。为此,我使用groupby函数:
gr = df.groupby([df.Date.map(lambda d: d.date()), 'Buyer']).mean()
是否有可能将生成的'gr'DataFrame转换为带有PeriodIndex的DataFrame,以便我可以使用resample函数计算每周和每月的平均值?
重要提示:我需要重新采样'gr'数据帧而非原始'df'
我会非常感谢任何帮助。
谢谢
安迪
答案 0 :(得分:0)
首先,将Index(带日期对象)转换为DatetimeIndex。 然后将DatetimeIndex转换为PeriodIndex。
In [103]: gr.reset_index(level=1)
Out[103]:
Buyer Trades
Date
2013-01-01 Carl 3.0
2013-01-01 Mark 3.0
2013-01-02 Carl 3.0
2013-01-02 Joe 8.5
In [104]: gr = gr.reset_index(level=1)
In [105]: gr.index = gr.index.to_datetime().to_period('M')
In [106]: gr
Out[106]:
Buyer Trades
2013-01 Carl 3.0
2013-01 Mark 3.0
2013-01 Carl 3.0
2013-01 Joe 8.5