簡體   English   中英

比較具有相同列和不同行的兩個數據框

[英]Comparing two dataframes with same columns and different rows

我有 2 個數據幀 df1、df2,我想比較這些數據幀。

import pandas as pd

df1 = pd.DataFrame({'Column1': ['f','c','b','d','e','g','h'], 
                    'Column2': ['1','2','3','4','5','7','8']})

df2 = pd.DataFrame({'Column1': ['f','b','d','e','a','g'], 
                    'Column2': ['1','3','4','5','6','7']})

為了比較數據幀,我使用 pandas 合並。 這是我的代碼。

df = pd.merge(df1,df2, how="outer", on="Column1")

結果:

  Column1 Column2_x Column2_y
  0       f         1         1
  1       c         2       NaN
  2       b         3         3
  3       d         4         4
  4       e         5         5
  5       g         7         7
  6       h         8       NaN
  7       a       NaN         6

但我不想要這個結果......我想要的 output 如下:

我怎樣才能得到 output ???

  What i want :

  Column1 Column2_x Column2_y
  0       f         1         1
  1       c         2       NaN
  2       b         3         3
  3       d         4         4
  4       e         5         5
  5       a       NaN         6
  6       g         7         7
  7       h         8       NaN

看起來您想保留df1中的行順序。 嘗試:

(df1.assign(enum=np.arange(len(df1)))
    .merge(df2, on='Column1', how='outer')
    .sort_values('enum')
    .drop(columns=['enum'])
)

Output:

  Column1 Column2_x Column2_y
0       f         1         1
1       c         2       NaN
2       b         3         3
3       d         4         4
4       e         5         5
5       g         7         7
6       h         8       NaN
7       a       NaN         6

暫無
暫無

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

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