首页 > 解决方案 > 根据上一个日期将“NaT”替换为下一个日期

问题描述

我的 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方法可以做到这一点吗?谢谢你的帮助!

问候托马斯

标签: pythonpandasdataframedatereplace

解决方案


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

#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'])]

推荐阅读