2015-09-06 110 views
1

我有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有關?

+1

IIUC我認爲你可以做'df.loc [DF [」週日']。dt.weekday == 5] = df.shift(-1)'我認爲 – EdChum

+0

這不適合我。我已經添加了一個數據框的例子,顯示列 –

+0

明白了。我可以做'df.loc [df.index.weekday == 5] = df.shift(-24)',我甚至不需要'weekday'幫助者列。 –

回答

1

您可以使用loc和口罩,選擇要修改的行和分配值shift通過你的正常間隔ED:

df.loc[df.index.weekday==5] = df.shift(-24) 
相關問題