在pandas中将值从星期五复制到下一个星期六



我有8760小时的数据,并为其添加了一个日期时间索引。我要做的是将星期六的所有值替换为前一个星期五的值。

df = pandas.DataFrame(hourly_data, names=['values'])
df.index = pd.date_range('2015-01-01','2016-01-01', freq='H')[:8760]
df['weekday'] = df.index.weekday

所以df格式如下:

                     value  weekday
2015-01-03 00:00:00     21        5
2015-01-03 01:00:00     21        5
2015-01-03 02:00:00     21        5
...
2015-01-03 00:00:00     12        6
2015-01-03 01:00:00     12        6
2015-01-03 02:00:00     12        6

我想要得到的是:

                     value  weekday
2015-01-03 00:00:00     21        5
2015-01-03 01:00:00     21        5
2015-01-03 02:00:00     21        5
...
2015-01-03 00:00:00     21        6
2015-01-03 01:00:00     21        6
2015-01-03 02:00:00     21        6

但是我不知道怎么去那里。也许和offset有关?

您可以使用loc和掩码来选择您希望修改的行,并根据您的常规间隔分配shift值:

df.loc[df.index.weekday==5] = df.shift(-24)

最新更新