Python 将时间序列中的两个数据帧相交
我有两个数据帧,看起来与下面描述的数据帧相似Python 将时间序列中的两个数据帧相交,python,pandas,dataframe,numpy,time-series,Python,Pandas,Dataframe,Numpy,Time Series,我有两个数据帧,看起来与下面描述的数据帧相似 df1 id date x w 0 71896517 2020-07-25 1 5 1 71896517 2020-09-14 2 3 2 72837666 2020-09-21 1 9 3 72848188 2020-11-03 1 1 df2
df1
id date x w
0 71896517 2020-07-25 1 5
1 71896517 2020-09-14 2 3
2 72837666 2020-09-21 1 9
3 72848188 2020-11-03 1 1
df2
id date x y z
0 71896517 2020-07-25 1 1 6
1 71896589 2020-09-14 2 2 8
2 72837949 2020-09-21 1 1 3
3 72848188 2020-11-03 1 1 2
我只想通过与上面两个数据帧相交来实现一个数据帧,并实现类似于:
id date x w y z
0 71896517 2020-07-25 1 5 1 6
1 71896517 2020-09-14 2 3 NaN NaN
2 71896589 2020-09-14 2 NaN 2 8
3 72837666 2020-09-21 1 9 NaN NaN
4 72837949 2020-09-21 1 NaN 1 3
5 72848188 2020-11-03 1 1 1 2
我非常希望每个日期的每个id的信息都在同一行。我离开了NaN,因为我认为这就是它的呈现方式,但是我会用零填充它们。
我如何才能做到这一点?让我们尝试外部合并:
df3 = df1.merge(df2, how='outer').sort_values('date').reset_index(drop=True)
print(df3)
df3
:
id date x w y z
0 71896517 2020-07-25 1 5.0 1.0 6.0
1 71896517 2020-09-14 2 3.0 NaN NaN
2 71896589 2020-09-14 2 NaN 2.0 8.0
3 72837666 2020-09-21 1 9.0 NaN NaN
4 72837949 2020-09-21 1 NaN 1.0 3.0
5 72848188 2020-11-03 1 1.0 1.0 2.0