У меня есть датафрейм, содержащий нерегулярные события времени. Я хотел бы расширить его, добавив дополнительные строки (сначала пустые, которые будут заполнены позже) для каждой недели, которой еще нет. Это то, что у меня есть:
import pandas as pd
df = pd.DataFrame({'id' : [1,1,2,2,2],
'date': ['2019-01-01', '2019-02-01', '2019-01-01', '2019-03-01', '2019-05-01'],
'value': [100, 200, 300, 400, 500]})
df["week"] = pd.to_datetime(df["date"]).dt.to_period('W')
all_weeks = pd.period_range(min(df["date"]), max(df["date"]), freq='W')
all_weeks
PeriodIndex(['2018-12-31/2019-01-06', '2019-01-07/2019-01-13',
'2019-01-14/2019-01-20', '2019-01-21/2019-01-27',
'2019-01-28/2019-02-03', '2019-02-04/2019-02-10',
'2019-02-11/2019-02-17', '2019-02-18/2019-02-24',
'2019-02-25/2019-03-03', '2019-03-04/2019-03-10',
'2019-03-11/2019-03-17', '2019-03-18/2019-03-24',
'2019-03-25/2019-03-31', '2019-04-01/2019-04-07',
'2019-04-08/2019-04-14', '2019-04-15/2019-04-21',
'2019-04-22/2019-04-28', '2019-04-29/2019-05-05'],
dtype='period[W-SUN]', freq='W-SUN')
Мои данные покрывают 18 недель, поэтому я бы хотел, чтобы df
было расширено таким образом, чтобы оно имело 18 * 2 = 36 строк, с пустыми values
для вновь добавленных строк, но оба раза id
появляются 18 раз. Как мне этого добиться?
Ожидаемый результат :
id week value
1.0 '2018-12-31/2019-01-06' 100
1.0 '2019-01-07/2019-01-13' NaN
...
1.0 '2019-04-29/2019-05-05' NaN
2.0 '2018-12-31/2019-01-06' 300
2.0 '2019-01-07/2019-01-13' NaN
...
Я предполагаю, что это внешнее слияние по столбцу week
, но я не понялего еще.