我想知道如何合并两个使用时间值作为索引的数据框。但是,并非所有索引都相同。
说我想合并这些数据框
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值。
答案 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'))