Python 熊猫:第一个周期的数据帧上采样失败

Python 熊猫:第一个周期的数据帧上采样失败,python,pandas,dataframe,Python,Pandas,Dataframe,我有一系列每日气象数据,我想用该日所属月份的平均值替换每个每日值。为了实现这一点,我想首先将数据帧的采样降低到月平均值,然后再次将其采样提高到日频率。所有这些都使用熊猫1.0.1 数据帧如下所示: dframe = 2001-01-01 23.00000 2001-01-02 19.18034 2001-01-03 9.18034 2001-01-04 0.00000 2001-01-05 0.00000 2001-01-06 0.00000 2001-01-07 0.00000

我有一系列每日气象数据,我想用该日所属月份的平均值替换每个每日值。为了实现这一点,我想首先将数据帧的采样降低到月平均值,然后再次将其采样提高到日频率。所有这些都使用熊猫1.0.1

数据帧如下所示:

dframe = 
2001-01-01  23.00000
2001-01-02  19.18034
2001-01-03  9.18034
2001-01-04  0.00000
2001-01-05  0.00000
2001-01-06  0.00000
2001-01-07  0.00000
2001-01-08  0.00000
2001-01-09  9.18034
2001-01-10  19.18034
2001-02-01  20.18034
2001-02-02  10.18034
2001-02-03  0.00000
2001-02-04  0.00000
2001-02-05  0.00000
2001-02-06  0.00000
2001-02-07  0.00000
2001-02-08  10.18034
2001-02-09  20.18034
2001-02-10  24.00000
下采样后,情况看起来正常(值可能不匹配,这些是伪数字):

但随后的上采样并不像我希望的那样起作用:

segmented = means.resample(rule = 'D').bfill()

segmented = 
2001-01-31   8.456906
2001-02-01   7.499419
2001-02-02   7.499419
2001-02-03   7.499419
2001-02-04   7.499419
...               ...
第一个时期(2001年1月)没有增加抽样,而第二个时期是增加抽样

我用参数
closed
label
loffset
以及
bfill()
ffill()
尝试了所有组合,但都没有用;有时是第一个月出错,有时是最后一个月,但总有一个月出错


非常感谢您的帮助。

也许您可以使用
groupby
,每月使用一次,并且
transform
如下:

segmented = dframe.groupby(pd.Grouper(level=0, freq='M')).transform('mean')
假设日期在索引中,您将拥有
dframe
中的所有日期,以及与每个日期相关的当月平均值

pd.Series(
[1,2,3,4],指数=pd.日期范围('2018-01-30',期间=4,频率=D')
).resample(规则='M').transform(lambda x:x.mean())

这种方法的问题在于,当您将
表示为
时,索引的范围不再包括您最初拥有的所有日期。转换(或应用)是一种很好的方法,可以使输入的行数与输入的行数相同。

谢谢,这两种方法都非常有效

“您的方法存在的问题是,当您创建means时,索引的范围不再包括您最初拥有的所有日期”

我怀疑这类事情,但我不知道如何克服它

segmented = dframe.groupby(pd.Grouper(level=0, freq='M')).transform('mean')