Добавить выходные в 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