-1

我有一个 DataFrame,其 DatetimeIndex 标记为一年中的最后一天(ej 2020-12-31、2021-12-31 等)。我需要重新采样才能将数据框扩展到几个月(ej 2020-01-31、2020-02-29 等)。当我使用 resample 函数时,它将始终从开始日期开始,而不是当年的第一天(ej 2020-12-31、2021-01-31)。

输入:

         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

谢谢。

4

1 回答 1

0

用 将数据帧从列转置到行.T,用 adate_range.min到,然后用 再次将数据帧从行转回到列。.maxfreq'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
于 2020-08-01T01:21:27.733 回答