簡體   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