[英]python / pandas - Find common columns between two dataframes, and create another one with same columns showing their difference
[英]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.