簡體   English   中英

合並具有不同索引的兩個數據幀(時間作為索引)

[英]Merging two dataframes with different indexes (time as index)

我想知道如何合並兩個使用時間值作為索引的數據幀。 但是,並非所有索引都相同。

說我想合並這些數據幀

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 值。

pandas.concat在索引和列值上對齊,因此您需要重命名DataFramevalue列之一。

# 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()

[出去]

            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

或者,您可以使用DataFrame.merge

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

[出去]

            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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM