Pandas 在列之间找到具有相反值的重复项

ldo*_*doe 3 python inversion dataframe pandas

在 A 列中的值与 B 列中的值相反的情况下,查找重复项的最快方法是什么?

例如,如果我有一个 DataFrame :

     Column A           Column B
0           C                  P
1           D                  C
2           L                  G
3           A                  D
4           B                  P
5           B                  G
6           P                  B
7           J                  T
8           P                  C
9           J                  T
Run Code Online (Sandbox Code Playgroud)

结果将是:

     Column A           Column B
0           C                  P
8           P                  C
4           B                  P
6           P                  B
Run Code Online (Sandbox Code Playgroud)

我试过 :

df1 = df
df2 = df
for i in df2.index:
     res = df1[(df1['Column A'] == df2['Column A'][i]) & (df1['Column B'] == df2['Column B'][i])]
Run Code Online (Sandbox Code Playgroud)

但这非常慢,并且它迭代相同的值......

jez*_*ael 5

merge与重命名的列一起使用DataFrame

d = {'Column A':'Column B','Column B':'Column A'}
df = df.merge(df.rename(columns=d))
print (df)
  Column A Column B
0        C        P
1        B        P
2        P        B
3        P        C
Run Code Online (Sandbox Code Playgroud)