Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果2020年的日期的预订值小于25,则用上一年的7天平均值替换_Python_Pandas_Dataframe_Data Cleaning_Data Conversion - Fatal编程技术网

Python 如果2020年的日期的预订值小于25,则用上一年的7天平均值替换

Python 如果2020年的日期的预订值小于25,则用上一年的7天平均值替换,python,pandas,dataframe,data-cleaning,data-conversion,Python,Pandas,Dataframe,Data Cleaning,Data Conversion,我正在处理熊猫数据帧,如果少于25列的预订值平均为7天,我必须替换列预订值示例x=22-03-2020的预订值为3,我必须替换它 x = average(before 3 days + last year same date + after 3 days/7)) 更换后 我有很多值要替换,我可以手动替换,但我需要一些快捷方式。你可以使用滚动和中心=真,但需要所有天数的值,所以添加,然后将一年添加到日期时间索引中,因为闰年是2020年,所以在2月底的总重复数中添加平均值,按掩码最后设置的值:

我正在处理熊猫数据帧,如果少于25列的预订值平均为7天,我必须替换列预订值示例
x=22-03-2020
的预订值为3,我必须替换它

x = average(before 3 days + last year same date + after 3 days/7))

更换后


我有很多值要替换,我可以手动替换,但我需要一些快捷方式。

你可以使用
滚动
中心=真
,但需要所有天数的值,所以添加,然后将一年添加到
日期时间索引中
,因为闰年是2020年,所以在2月底的总重复数中添加
平均值
,按掩码最后设置的值:

df = pd.DataFrame({'date':pd.date_range('2019-03-19', periods=8),
                 'Booking':[92,109,144,109,122,76,78, 3]}) 
df.loc[7, 'date'] = pd.to_datetime('2020-03-22')

df = df.set_index('date')

s = df['Booking'].asfreq('d').rolling(7, center=True).mean()
s.index = s.index + pd.offsets.DateOffset(years=1)
s = s.mean(level=0)
print (s)
date
2020-03-19           NaN
2020-03-20           NaN
2020-03-21           NaN
2020-03-22    104.285714
2020-03-23           NaN
   
2021-03-18           NaN
2021-03-19           NaN
2021-03-20           NaN
2021-03-21           NaN
2021-03-22           NaN
Name: Booking, Length: 369, dtype: float64


请显示您已尝试的内容,然后返回代码片段
mask = df['Booking'].lt(25)

df.loc[mask, 'Booking'] = s
print (df)
               Booking
date                  
2019-03-19   92.000000
2019-03-20  109.000000
2019-03-21  144.000000
2019-03-22  109.000000
2019-03-23  122.000000
2019-03-24   76.000000
2019-03-25   78.000000
2020-03-22  104.285714