【问题标题】:Find Difference Between Two DataFrames on Columns查找列上两个 DataFrame 之间的差异
【发布时间】:2019-11-08 04:59:47
【问题描述】:

这似乎是一个如此简单的问题,但我很难过。我正在尝试返回一个包含 df1 和 df2 之间差异的新数据帧 (df3)。我不关心值的差异,只关心列标签/索引。我试过pd.columns.difference() 但无济于事。我的预期输出是:

df1 
1  2  3  4  5  6  7  8  9  10 11 12 13 14
C  C  C  C  C  C  T  T  T  T  T  S  S  S
G  N  D  A  G  N  D  A  G  N  D  A  G  N
K  M  I  L  R  K  M  I  L  R  K  M  I  L
C  C  L  C  C  C  T  T  T  T  T  S  S  S
G  N  D  A  E  N  D  A  G  N  D  A  G  N
Y  F  V  H  Q  E  P  W  Y  F  V  H  Q  E
G  N  D  A  G  N  F  A  G  G  D  A  G  N
G  Y  D  A  G  N  D  A  G  N  D  A  G  N

df2 
1  4  9
C  C  T
G  A  G
K  L  L
C  C  T
G  A  G
Y  H  Y
G  A  G
G  A  G

Expected df3: 
2  3  5  6  7  8  10 11 12 13 14
C  C  C  C  T  T  T  T  S  S  S
N  D  G  N  D  A  N  D  A  G  N
M  I  R  K  M  I  R  K  M  I  L
C  L  C  C  T  T  T  T  S  S  S
N  D  E  N  D  A  N  D  A  G  N
F  V  Q  E  P  W  F  V  H  Q  E
N  D  G  N  F  A  G  D  A  G  N
Y  D  G  N  D  A  N  D  A  G  N



【问题讨论】:

    标签: python python-3.x pandas data-science


    【解决方案1】:

    您有几个选择。这里有一些

    df3 = df1[[col for col in df1.columns if col not in df2.columns]]
    

    df3 = df1.drop(df2.columns, axis=1)
    

    但是,第二种方法要求df2 的所有列都存在于df1 中,正如@Chris 在 cmets 中所指出的那样。

    【讨论】:

    • 如果df2df1 中不存在的列,第二种方式会有点冒险
    【解决方案2】:

    或者使用pandas.DataFrame.columns.difference:

    df3 = df1[df1.columns.difference(df2.columns, False)]
    

    输出:

       2  3  5  6  7  8 10 11 12 13 14
    0  C  C  C  C  T  T  T  T  S  S  S
    1  N  D  G  N  D  A  N  D  A  G  N
    2  M  I  R  K  M  I  R  K  M  I  L
    3  C  L  C  C  T  T  T  T  S  S  S
    4  N  D  E  N  D  A  N  D  A  G  N
    5  F  V  Q  E  P  W  F  V  H  Q  E
    6  N  D  G  N  F  A  G  D  A  G  N
    7  Y  D  G  N  D  A  N  D  A  G  N
    

    【讨论】:

      【解决方案3】:

      你也可以试试isincolumns

      df3 = df1.loc[:, ~df1.columns.isin(df2.columns)]
      
      Out[215]:
         2  3  5  6  7  8 10 11 12 13 14
      0  C  C  C  C  T  T  T  T  S  S  S
      1  N  D  G  N  D  A  N  D  A  G  N
      2  M  I  R  K  M  I  R  K  M  I  L
      3  C  L  C  C  T  T  T  T  S  S  S
      4  N  D  E  N  D  A  N  D  A  G  N
      5  F  V  Q  E  P  W  F  V  H  Q  E
      6  N  D  G  N  F  A  G  D  A  G  N
      7  Y  D  G  N  D  A  N  D  A  G  N
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-19
        • 2016-06-12
        • 2016-07-04
        • 1970-01-01
        • 1970-01-01
        • 2014-02-02
        • 2012-02-09
        相关资源
        最近更新 更多