合并两个具有不同索引的数据帧(以时间为索引)

时间:2019-06-27 12:44:06

标签: python pandas

我想知道如何合并两个使用时间值作为索引的数据框。但是,并非所有索引都相同。

说我想合并这些数据框

index         value
2019-07-12    4.0
2019-08-21    4.5
2019-08-22    4.4
2019-09-01    7.2

index          value
2019-07-14     5.6
2019-07-19     9.2
2019-08-21     4.0
2019-09-02     3.2

然后得到以下结果:

index          value1    value2
2019-07-12     4.0       NaN
2019-07-14     NaN       5.6
2019-07-19     NaN       9.2
2019-08-21     4.5       4.0
2019-08-22     4.4       NaN
2019-09-01     7.2       NaN
2019-09-02     NaN       3.2

我浏览了pandas.concat文档,但要么无法理解,要么找不到使我能够这样做的东西。

是的,我打算通过内插这些特定的列来整理NaN值。

1 个答案:

答案 0 :(得分:1)

pandas.concat对齐索引和列值,因此您需要重命名DataFrame的{​​{1}}列之一。

value

[出]

# Setup
from pandas import Timestamp

df1 = pd.DataFrame({'value': {Timestamp('2019-07-12 00:00:00'): 4.0, Timestamp('2019-08-21 00:00:00'): 4.5, Timestamp('2019-08-22 00:00:00'): 4.4, Timestamp('2019-09-01 00:00:00'): 7.2}})
df2 = pd.DataFrame({'value': {Timestamp('2019-07-14 00:00:00'): 5.6, Timestamp('2019-07-19 00:00:00'): 9.2, Timestamp('2019-08-21 00:00:00'): 4.0, Timestamp('2019-09-02 00:00:00'): 3.2}})

pd.concat([df1, df2.rename({'value':'value2'}, axis=1)]).sort_index()

或者,您可以使用DataFrame.merge

            value  value2
2019-07-12    4.0     NaN
2019-07-14    NaN     5.6
2019-07-19    NaN     9.2
2019-08-21    4.5     NaN
2019-08-21    NaN     4.0
2019-08-22    4.4     NaN
2019-09-01    7.2     NaN
2019-09-02    NaN     3.2

[出]

df1.merge(df2, how='outer', left_index=True, right_index=True, suffixes=('1', '2'))