如何为一年中的每个结束日期及其相应的值创建时间序列?

How to create time series for every end date of the year with its corresponding value?

我有一个数据框,看起来像下面的方式,其中 'Date' 列已经有 datetime64 dtype:

           Date     Income_Company_A
0       1990-02-01       2185600.0  
1       1990-02-02       3103200.0
........................................
5467    2011-10-10       29555500.0
5468    2011-10-11       54708100.0

如何获取 Income_Company_A 的值,其中日期必须是每年的结束日期,即从 1990 年到 2011 年的每一年都必须是 12 月 31 日? 另外,如果每年的结束日期的值为 Null/NaN,那么如何用数据框中该日期之前的值填充它?

具有 NaN 值的第一个输出应如下所示:

1990-12-31     1593200.0
1991-12-31     4802000.0
1992-12-31     3302000.0
1993-12-31     5765200.0
1994-12-31           NaN

然后将日期 1994-12-31 的 NaN 值替换为之前日期的值,例如 1994-12-29 7865200.0,最终输出应如下所示:

1990-12-31     1593200.0
1991-12-31     4802000.0
1992-12-31     3302000.0
1993-12-31     5765200.0
1994-12-31     7865200.0

假设日期列已经是日期时间数据类型:

df.loc[(df['Date'].dt.month == 12) & (df['Date'].dt.day == 31)].ffill()

在那种情况下,试试这个:

df.loc[df.groupby(df['Date'].dt.year)['Date'].idxmax()].ffill()

使用resample并取年份的最后一个有效值:

out = df.assign(Date=df['Date'].astype('datetime64')).resample('Y', on='Date').last()

如果您的 Date 列已经 datetime64 dtype,您可以省略 .assign(...)