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
。然后,插值。就像那样,这很快就奏效了。谢谢