ResidentSleeper
ResidentSleeper

Reputation: 2495

Pandas: Resample from weekly to daily with offset

I want to resample this following dataframe from weekly to daily then ffill the missing values.

Note: 2018-01-07 and 2018-01-14 is Sunday.

         Date  Val
0  2018-01-07    1
1  2018-01-14    2

I tried.

df.Date = pd.to_datetime(df.Date)
df.set_index('Date', inplace=True)
offset = pd.offsets.DateOffset(-6)

df.resample('D', loffset=offset).ffill()

            Val
Date           
2018-01-01    1
2018-01-02    1
2018-01-03    1
2018-01-04    1
2018-01-05    1
2018-01-06    1
2018-01-07    1
2018-01-08    2

But I want

         Date  Val
0  2018-01-01    1
1  2018-01-02    1
2  2018-01-03    1
3  2018-01-04    1
4  2018-01-05    1
5  2018-01-06    1
6  2018-01-07    1
7  2018-01-08    2
8  2018-01-09    2
9  2018-01-10    2
10 2018-01-11    2
11 2018-01-12    2
12 2018-01-13    2
13 2018-01-14    2

What did I do wrong?

Upvotes: 3

Views: 2024

Answers (1)

jezrael
jezrael

Reputation: 862581

You can add new last row manually with subtract offset for datetime:

df.loc[df.index[-1] - offset] = df.iloc[-1]
df = df.resample('D', loffset=offset).ffill()
print (df)
            Val
Date           
2018-01-01    1
2018-01-02    1
2018-01-03    1
2018-01-04    1
2018-01-05    1
2018-01-06    1
2018-01-07    1
2018-01-08    2
2018-01-09    2
2018-01-10    2
2018-01-11    2
2018-01-12    2
2018-01-13    2
2018-01-14    2

Upvotes: 4

Related Questions