合并时间戳上的两个数据帧,同时保留所有数据



我想合并两个数据帧,以创建一个具有两个变量的单一时间序列。

我有一个函数通过使用iterows()迭代每个数据帧来实现这一点…这是非常慢的,并且没有利用pandas和numpy提供的矢量化…

你能帮忙吗?

下面的代码说明了我要做的事情:

a = pd.DataFrame(data={'timestamp':[1,2,5,6,10],'x':[2,6,3,4,2]})
b = pd.DataFrame(data={'timestamp':[2,3,4,10],'y':[3,1,2,1]})
#z = Magical line of code/function call here
#z output: {'timestamp':[1,2,3,4,5,6,10],'x':[2,6,6,6,3,4,2], 'y':[NaN,3,1,2,2,2,1] }

这可以分为两个步骤:

  • 第一步相当于SQL中的外连接,其中创建一个包含两个源表的键的表。这是通过merge(..., how="outer")
  • 完成的第二个是用之前的非NaN值填充NaN,这可以用ffill完成
z = a.merge(b, on="timestamp", how="outer").sort_values("timestamp").ffill()

最新更新