首页 > 解决方案 > 如何在不丢失行的情况下合并 Time Series Panda 数据框?

问题描述

标题

  1. 如何在不丢失行的情况下合并时间序列 DataFrame?
  2. 最终结果 DataFrame 形状应该基于哪个 DataFrame 具有更大的 DataFrame 形状。

DF1:

0  17.12.2014 13:56:56                        1.9
1  17.12.2014 13:56:58                        3.1
2  17.12.2014 13:56:59                        2.8
3  17.12.2014 13:57:10                        2.3
4  17.12.2014 13:57:11                        3.1

df1.shape 约为 3000

df2:
       Time                                    Value
1   17.12.2014 13:55:56                        2.9
2   17.12.2014 13:55:58                        6.0
3   17.12.2014 13:55:58                        3.6
4   17.12.2014 13:55:59                        2.8
5   17.12.2014 13:56:07                        1.9
6   17.12.2014 13:56:12                        2.9
7   17.12.2014 13:56:12                        3.0
8   17.12.2014 13:56:13                        1.8
9   17.12.2014 13:56:15                        2.2
10  17.12.2014 13:56:15                        2.0
11  17.12.2014 13:56:41                        1.7
12  17.12.2014 13:56:41                        2.4
13  17.12.2014 13:56:42                        2.8
14  17.12.2014 13:56:42                        1.9
15  17.12.2014 13:56:43                        2.8
16  17.12.2014 13:56:43                        1.7
17  17.12.2014 13:56:44                        2.8
18  17.12.2014 13:56:45                        1.7
19  17.12.2014 13:56:59                        2.8
20  17.12.2014 14:03:08                        1.7

df2.shape 大约是 20000

df3 

1   17.12.2014 13:56:12                        3.2

df3.shape 约为 5000

我需要如下结果数据帧,结果数据帧大小应该(20000)根据 DF2 大小:

    Time                   Value1          Value2                       Value3                
1   17.12.2014 13:55:56        NaN             2.9                            NaN                    
2   17.12.2014 13:55:58        NaN             6.0                            NaN                    
3   17.12.2014 13:55:58        NaN             3.6                            NaN                    
4   17.12.2014 13:55:59        NaN             2.8                            NaN                    
5   17.12.2014 13:56:07        NaN             1.9                            NaN                    
6   17.12.2014 13:56:12        NaN             2.9                            NaN                    
7   17.12.2014 13:56:12        NaN             3.0                            3.2                    
8   17.12.2014 13:56:13        NaN             1.8                            NaN                    
9   17.12.2014 13:56:15        NaN             2.2                            NaN                    
10  17.12.2014 13:56:15        NaN             2.0                            NaN                    
11  17.12.2014 13:56:41        NaN             1.7                            NaN                    
12  17.12.2014 13:56:41        NaN             2.4                            NaN                    
13  17.12.2014 13:56:42        NaN             2.8                            NaN                    
14  17.12.2014 13:56:42        NaN             1.9                            NaN                    
15  17.12.2014 13:56:43        NaN             2.8                            NaN                    
16  17.12.2014 13:56:43        NaN             1.7                            NaN                    
17  17.12.2014 13:56:44        NaN             2.8                            NaN                    
18  17.12.2014 13:56:45        NaN             1.7                            NaN       
19  17.12.2014 13:56:56        1.9             NaN                            NaN
20  17.12.2014 13:56:58        3.1             NaN                            NaN
21  17.12.2014 13:56:59        2.8             2.8                            NaN
22  17.12.2014 13:57:10        2.3             NaN                            NaN
23  17.12.2014 13:57:11        3.1             NaN                            NaN
20  17.12.2014 14:03:08        NaN             1.7                            NaN

谢谢

标签: pythonpandasdatetimedataframetime-series

解决方案


我认为您想要的是外部联接

pd.merge(df1, df2, how = 'outer', on = 'Time')

这确实是完全外部连接。您可以更改outerleft,right用于左/右外连接。


推荐阅读