繁体   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