Добавить выходные в Dataframe

У меня есть dataframe data в котором нет выходных. Можно ли как то добавить их и скопировать в эти ячейки данные с пятницы?

Было:

3/16/2021   1.19247     1.19247
3/17/2021   1.19019     1.19247
3/18/2021   1.19784     1.19247
3/19/2021   1.19172     1.19247
3/22/2021   1.18847     1.19247
Стало:

3/16/2021   1.19247     1.19247
3/17/2021   1.19019     1.19247
3/18/2021   1.19784     1.19247
3/19/2021   1.19172     1.19247
3/20/2021   1.19172     1.19247 добавили выходной и скопировали строку из предыдущей
3/21/2021   1.19172     1.19247 добавили выходной и скопировали строку из предыдущей
3/22/2021   1.18847     1.19247

Ответы (1 шт):

Автор решения: strawdog

Если у вас первый столбец с датой - это действительно дата, а не строка и он является индексом, то все делается просто:

res = df.reindex(pd.date_range(start=df.index.min(),  end=df.index.max(), freq='1D')).ffill()

res:

                  1        2
2021-03-16  1.19247  1.19247
2021-03-17  1.19019  1.19247
2021-03-18  1.19784  1.19247
2021-03-19  1.19172  1.19247
2021-03-20  1.19172  1.19247
2021-03-21  1.19172  1.19247
2021-03-22  1.18847  1.19247

UPDATE

Для конкретного случая у автора вопроса решение будет таким:

import pandas as pd

df = pd.read_csv("opp.csv", parse_dates=["Date"], dayfirst=False)
res =df.set_index("Date").reindex(pd.date_range(start=df["Date"].min(),
                                                end=df["Date"].max(), freq='1D')).ffill().rename_axis('Date').reset_index()

Теперь res:

         Date        1        2
0  2021-01-21  1.21102  1.21102
1  2021-01-22  1.21679  1.21679
2  2021-01-23  1.21679  1.21679
3  2021-01-24  1.21679  1.21679
4  2021-01-25  1.21678  1.21678
5  2021-01-26  1.21430  1.21430
6  2021-01-27  1.21607  1.21607
7  2021-01-28  1.21089  1.21089
8  2021-01-29  1.21222  1.21222
9  2021-01-30  1.21222  1.21222
10 2021-01-31  1.21222  1.21222
11 2021-02-01  1.21290  1.21290
..        ...      ...      ...
49 2021-03-11  1.19267  1.19267
50 2021-03-12  1.19835  1.19835
51 2021-03-13  1.19835  1.19835
52 2021-03-14  1.19835  1.19835
53 2021-03-15  1.19483  1.19483
54 2021-03-16  1.19247  1.19247
55 2021-03-17  1.19019  1.19019
56 2021-03-18  1.19784  1.19784
57 2021-03-19  1.19172  1.19172
58 2021-03-20  1.19172  1.19172
59 2021-03-21  1.19172  1.19172
60 2021-03-22  1.18847  1.18847
→ Ссылка