如何将两个不同长度的数据帧与日期时间索引结合起来

How to combine two different length dataframes with datetime index

我有两个数据框

a = pd.DataFrame(
 {
    'Date': ['01-01-1990', '01-01-1991', '01-01-1993'],
    'A': [1,2,3]
 }
)
a = a.set_index('Date')

------------------------------------
            A
Date             
01-01-1990      1
01-01-1991      2
01-01-1993      3

还有一个

b = pd.DataFrame(
 {
    'Date': ['01-01-1990', '01-01-1992', '01-01-1993', '01-01-1994'],
    'B': [4,6,7,8]
 }
)
b = b.set_index('Date')

-------------------------------
            B
Date             
01-01-1990      4
01-01-1992      6
01-01-1993      7
01-01-1994      8

此处如果您注意到两个数据帧具有不同的长度(a=3,b=4),并且在 '01-01-1992' 中具有不同的 Date 条目。

问题是当我concat处理这些数据帧时,我得到的结果低于结果

pd.concat([a,b], sort=True)
------------------------------
              A    B
Date                
01-01-1990  1.0  NaN
01-01-1991  2.0  NaN
01-01-1993  3.0  NaN
01-01-1990  NaN  4.0
01-01-1992  NaN  6.0
01-01-1993  NaN  7.0
01-01-1994  NaN  8.0

这里的日期重复 01-01-1990 等等,还有 Nan 个条目。我想知道如何摆脱 NaNs 和独特的日期,如

              A    B
Date                
01-01-1990  1.0  4.0
01-01-1991  2.0  NaN
01-01-1992  NaN  6.0
01-01-1993  3.0  7.0
01-01-1994  NaN  8.0

concat 默认情况下沿行连接 (axis=0)。您可以指定 axis=1 以便它沿列连接(并加入索引):

pd.concat([a, b], axis=1)

              A    B
01-01-1990  1.0  4.0
01-01-1991  2.0  NaN
01-01-1993  3.0  7.0
01-01-1992  NaN  6.0
01-01-1994  NaN  8.0

或加入:

a.join(b, how='outer')   

或合并:

a.merge(b, right_index=True, left_index=True, how='outer')