Python 熊猫填充以前日期+固定天数的连续空日期值
我有一个包含数据列的数据帧Python 熊猫填充以前日期+固定天数的连续空日期值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含数据列的数据帧 Comp_date 0 2020-04-24 1 NaT 2 NaT 3 NaT 4 2020-08-06 5 NaT 6 NaT 7 NaT 8 2020-08-22 9 NaT 我试图用前一个日期的值填充空值,并加上10天的固定天数。但我不能这样做。我尝试了以下方法 df['Comp_date']=df['Comp_date'].fillna((df['Comp_d
Comp_date
0 2020-04-24
1 NaT
2 NaT
3 NaT
4 2020-08-06
5 NaT
6 NaT
7 NaT
8 2020-08-22
9 NaT
我试图用前一个日期的值填充空值,并加上10天的固定天数。但我不能这样做。我尝试了以下方法
df['Comp_date']=df['Comp_date'].fillna((df['Comp_date'].shift()+pd.to_timedelta(10, unit='D')), inplace=True)
什么都没发生,我得到了同样的结果。有什么帮助吗?
预期结果
Comp_date
0 2020-04-24
1 2020-05-04
2 2020-05-14
3 2020-05-24
4 2020-08-06
5 2020-08-16
6 2020-08-26
7 2020-09-05
8 2020-08-22
9 2020-09-01
我不清楚你的问题,但这会给最后观察到的比较日期增加一个固定的天数
我不清楚你的问题,但这会给最后观察到的比较日期增加一个固定的天数
想法是通过和创建缺少值的组,通过转换为时间增量创建计数器,通过添加到用ffill向前填充缺少的值:
想法是通过和创建缺少值的组,通过转换为时间增量创建计数器,通过添加到用ffill向前填充缺少的值:
你的预期产出是什么?你的预期产出是什么?
constant_number_of_days = 2
df2 = df['Comp_date'].ffill().to_frame()
df2.loc[df['Comp_date'].isnull(), 'Comp_date'] += pd.Timedelta(days=constant_number_of_days)
>>> df2
Comp_date
0 2020-04-24
1 2020-04-26
2 2020-04-26
3 2020-04-26
4 2020-08-06
5 2020-08-08
6 2020-08-08
7 2020-08-08
8 2020-08-22
9 2020-08-24
num_days = 10
g = df['Comp_date'].notna().cumsum()
days = pd.to_timedelta(df.groupby(g).cumcount().mul(num_days), unit='d')
df['Comp_date'] = df['Comp_date'].ffill().add(days)
print (df)
Comp_date
0 2020-04-24
1 2020-05-04
2 2020-05-14
3 2020-05-24
4 2020-08-06
5 2020-08-16
6 2020-08-26
7 2020-09-05
8 2020-08-22
9 2020-09-01