Добавление недель со значением 0 в кадр данных pandas с данными временного ряда для недель, когда данные не были получены - PullRequest
1 голос
/ 10 октября 2019

У меня есть транзакционные данные, которые я сгруппировал по неделям. Тем не менее, я не гарантирую, чтобы иметь данные каждую неделю. Group by проделала большую работу по заполнению пропущенных недель между первой и последней неделей нулевым количеством. Однако мне нужно заполнить мой фрейм данных значениями до текущей недели.

Мои данные хранятся в датафрейме dfShipsInScope, и я преобразовал свои данные в еженедельные с помощью приведенного ниже кода:

dfShipsInScope['START_TIME'] = pd.to_datetime(dfShipsInScope['START_TIME'])
dfShipsInScope=dfShipsInScope[['START_TIME','X']].groupby('START_TIME').sum()
dfShipsInScope=dfShipsInScope.resample(rule = 'W-SAT').sum()
dfShipsInScope.index.freq='W-SAT'

Это выдает что-то вроде этого:

            X
START_TIME  
2019-09-14  3.000
2019-09-21  0.000
2019-09-28  1.500

Мне нужно добавить недели 2019-10-05 и 2019-10-12 с X = 0, чтобы в кадре данных отображались недели до сегодняшнего дня. В некоторых случаях мне нужно добавить несколько недель нулей, поэтому я ищу эффективное решение. Кто-нибудь знает хороший способ сделать это?

1 Ответ

0 голосов
/ 10 октября 2019

Вы можете переиндексировать ваш вывод с помощью pd.date_range

In:

df.reindex(
    pd.date_range(start=df.index.min(),
                  end=pd.to_datetime('today') + pd.offsets.Week(),
                  freq='W-SAT')).fillna(0)

Out:

|            | X   |
|------------|-----|
| 2019-09-14 | 3.0 |
| 2019-09-21 | 0.0 |
| 2019-09-28 | 1.5 |
| 2019-10-05 | 0.0 |
| 2019-10-12 | 0.0 |
...