在Pandas中按DateTimeIndex对行取平均值
我有一个数据框(DataFrame),格式如下:
| 日期 | 数量 |
|---|---|
| 2008-01-01 | 5 |
| 2008-02-01 | 55 |
| 2008-03-01 | 6 |
| 2008-04-01 | 10 |
其中DatetimeIndex使用年-月-日格式。
我想计算每两个连续数值的平均值。我的dataframe 有数百行,因此我想使用 DateOffset 编写一个for循环。我尝试了以下代码(将 df 作为我的数据框名称):
import pandas as pd
from pandas.tseries.offsets import DataOffset
import numpy as np
df = df.set_index(['Date'])
for num in range(0,3):
begin = pd.Timestamp('2008-01-01') + pd.DateOffset(months = num)
end = pd.Timestamp('2008-02-01') + pd.DateOffset(months = num)
print(begin, end)
print(df.loc['begin':'end']['Number'].mean())
如果运行这段代码,起始日期和结束日期会正确输出,因此DateOffset在工作。但是,平均值都计算为非数字,'nan'。
此外,如果把 begin 和 end 替换为日期本身,它就能对那些特定日期计算出正确的平均值。
非常感谢您的帮助。
解决方案
你是否尝试过使用 df.rolling?
你需要做类似 df['Number'].rolling(2).mean() 的事情。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。