繁体   English   中英

查找列上两个 DataFrame 之间的差异

[英]Find Difference Between Two DataFrames on Columns

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

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



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

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

或者

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

但是,第二种方法要求df2的所有列都存在于df1中,如@Chris 的评论中所述。

或使用pandas.DataFrame.columns.difference

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

Output:

   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

您也可以尝试isin with columns

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM