我有一个DataFrame,它的DatetimeIndex标记为一年中的最后一天(e.j.2020-12-31、2021-12-31等(。我需要重新采样,以便将数据帧扩展到几个月(e.j.2020-01-31、2020-02-29等(。当我使用重采样函数时,它总是从开始日期开始,而不是当年的第一天(e.j 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
谢谢。
用.T
将数据帧从列转置到行,用'm'
的freq
将date_range
从.min
移到.max
,并用.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