Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫填充以前日期+固定天数的连续空日期值_Python_Pandas_Dataframe - Fatal编程技术网

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