根据另一个系列插入一个系列缺失值

Interpolate a series missing values based on another series

我有这个数据:

{
"col1" : [1,np.nan,np.nan,np.nan,np.nan,8],
"col2" : [2,np.nan,np.nan,np.nan,np.nan,2]
"col_macro" : [3,4,7,7,13,18]
}

两个数据列都是时间序列。 col1col2列是微观数据,col_macro是宏观数据 我想使用 col_macro 用插值替换缺失值。这意味着它们之间的变化率和冲击应该相似。

还有什么方法可以设置限制吗?例如,如果两端的值相似,我希望插值严格增加、减少或不变?

创建数据框

df=pd.DataFrame({
"col1" : [1,np.nan,np.nan,np.nan,np.nan,8],
"col2" : [2,np.nan,np.nan,np.nan,np.nan,2],
"col_macro" : [3,4,7,7,13,18]
})

找到col3中的连续差异,使用combined_first传递到右列。因为是连续差,所以做扩和

df['col1'] = df['col1'].combine_first(df['col_macro'].diff()).expanding(1).sum()
df['col2'] = df['col1'].combine_first(df['col_macro'].diff()).expanding(1).sum()