Python 通过线性插值组合两个不同的时间戳数据帧

Python 通过线性插值组合两个不同的时间戳数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有主数据帧和从数据帧。我想使用插值将从属数据附加到主数据帧。因为,两者都有不同的时间戳。例如 mas_df = index M24 2019-01-31 15:11:47 299.899098 2019-01-31 15:51:17 338.969140 sla_df = index POA 2019-01-31 15:10:00 99.78411 2019-01-31 15:11:00

我有主数据帧和从数据帧。我想使用插值将从属数据附加到主数据帧。因为,两者都有不同的时间戳。例如

mas_df = 

     index               M24
2019-01-31 15:11:47   299.899098
2019-01-31 15:51:17   338.969140


sla_df = 
index                     POA
2019-01-31 15:10:00     99.78411
2019-01-31 15:11:00     97.64976
2019-01-31 15:12:00    103.60300
2019-01-31 15:50:00    102.94610
2019-01-31 15:51:00    108.54370
2019-01-31 15:52:00    113.74820
2019-01-31 15:53:00    121.27410
目标是将slav_df列附加到mas_df

我的预期产出是:

mas_df = 
     index               M24           M24_POA 
2019-01-31 15:11:47   299.899098       102.31  # np.interp(15+(11/60)+(47/3600), [15+11/60,15+(12/60)],[97.64976,103.60300])
2019-01-31 15:51:17   338.969140       110.01  # np.interp(15+(51/60)+(17/3600), [15+51/60,15+(52/60)],[108.54370,113.74820])
我现在的代码取最近的值

aux_df=sla_df['POA'].reindex(mas_df.index,method='nearest').add_prefix(mas_df.columns[0])  
 mas_df = aux_df 
我目前的产出

mas_df = 
     index               M24           M24_POA 
2019-01-31 15:11:47   299.899098       103.60300  
2019-01-31 15:51:17   338.969140       113.74820

如何更改当前代码以包含插值?

您可以通过在从属数据帧中插值,然后将这些值作为新列添加到主数据帧来完成此操作:

for i in mas_df.index.values:
    sla_df.loc[i] = np.nan
sla_df = sla_df.sort_index().interpolate(method='time')
mas_df['M24_POA'] = [sla_df.loc[i]['POA'] for i in mas_df.index.values]
这导致:

mas_df =

      index            M24        M24_POA
2019-01-31 15:11:47 299.899098  102.313131
2019-01-31 15:51:17 338.969140  110.018308

请在您的问题中添加一个。@ralex我最小化了问题的长度原始示例很好,但您没有将输入内容转换为MVCE格式,以便我可以将其剪切并粘贴到解释器中并帮助您。@ralex感谢新事物MVCE。我对此一无所知。翻译部分听起来很有趣。你能给我一个问题MVCE的例子,这样我就可以很容易地改变它吗?感谢
,因为循环花费了更长的时间,我强制停止了它。相反,我将
nandf=pd.DataFrame(np.nan,index=mas\u-df.index,columns=slv\u-df.columns)”关联到slv\u-df
。然后,插值。就像那样,这很快就奏效了。谢谢