如何将两个不同长度的数据帧与日期时间索引结合起来
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
个条目。我想知道如何摆脱 NaN
s 和独特的日期,如
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')
我有两个数据框
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
个条目。我想知道如何摆脱 NaN
s 和独特的日期,如
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')