根据上一个日期将 "NaT" 替换为下一个日期

Replace "NaT" with next date based on previous date

我的 DF 如下所示:

column1      column2
2020-11-01   1
2020-12-01   2
2021-01-01   3
NaT          4
NaT          5
NaT          6

输出应该是这样的:

column1      column2
2020-11-01   1
2020-12-01   2
2021-01-01   3
2021-02-01   4
2021-03-01   5
2021-04-01   6

我无法根据 df 中的最后一个现有日期创建下一个日期(仅更改了月份和年份)。有什么 pythonic 方法可以做到这一点吗?感谢您的帮助!

问候 托马斯

pandas支持time series data

pd.date_range("2020-11-1", freq=pd.tseries.offsets.DateOffset(months=1), periods=10)

会给

DatetimeIndex(['2020-11-01', '2020-12-01', '2021-01-01', '2021-02-01',
               '2021-03-01', '2021-04-01', '2021-05-01', '2021-06-01',
               '2021-07-01', '2021-08-01'],
              dtype='datetime64[ns]', freq='<DateOffset: months=1>')

这就是我的做法,您可以将其整理成更多的一行,但这将有助于更多地说明该过程。

#convert to date
df['column1'] = pd.to_datetime(df['column1'], format='%Y-%d-%m')

#create a group for each missing section 
df['temp'] = df.column1.fillna(method = 'ffill')

#count the row within this group
df['temp2'] = df.groupby(['temp']).cumcount()

# add month
df['column1'] = [x + pd.DateOffset(months=y) for x,y in zip(df['temp'], df['temp2'])]