Pandas DataFrame Resample до месяцев, когда DatetimeIndex - последний день года - PullRequest
0 голосов
/ 01 августа 2020

У меня есть DataFrame с DatetimeIndex, помеченным как последний день года (например, 2020-12-31, 2021-12-31, и т. Д. c). Мне нужно выполнить повторную выборку, чтобы расширить фрейм данных на месяцы (например, 2020-01-31, 2020-02-29, et c). Когда я использую функцию передискретизации, она всегда будет начинаться с начальной даты, а не с первого дня этого года (например, 2020-12-31, 2021-01-31).

input:

         0          1          2      
Date 2020-12-31 2021-12-31 2022-12-31

вывод:

Out[122]: 
     0          1          2          3          4          5      ...     6
Date 2020-01-31 2020-02-28 2020-03-31 2020-04-30 2020-05-31 2020-06-30 ... 2022-12-31

Спасибо.

1 Ответ

0 голосов
/ 01 августа 2020

Транспонируйте фрейм данных из столбцов в строки с помощью .T, получите date_range из .min в .max с freq из 'm' и транспонируйте фрейм данных обратно из строк в столбцы с .T снова.

from datetime import timedelta
df = pd.DataFrame({0 : ['2020-12-31'],
                 1 : ['2021-12-31'],
                 2 : ['2022-12-31']})
df = df.T
df[0] = pd.to_datetime(df[0])
df = pd.DataFrame({'Date' : pd.date_range(df[0].min()-timedelta(days=365), df[0].max(), freq='m').to_list()}).T
df

Out[122]: 
         0          1          2          3          4          5      ...     6
Date 2020-01-31 2020-02-28 2020-03-31 2020-04-30 2020-05-31 2020-06-30 ... 2022-12-31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...