【问题标题】:Pandas find duplicates with reversed values between columns熊猫在列之间找到具有相反值的重复项
【发布时间】:2019-01-22 13:59:41
【问题描述】:

查找 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

结果将是:

     Column A           Column B
0           C                  P
8           P                  C
4           B                  P
6           P                  B

我试过了:

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])]

但这很慢,而且它会迭代相同的值...

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我为我尝试的内容进行了编辑

标签: python pandas dataframe inversion


【解决方案1】:

将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

【讨论】:

    【解决方案2】:

    您可以尝试使用reindex 进行反转。

    column_Names=["B","A"]
    df=df.reindex(columns=column_Names)
    

    或者你可以这样做:

    col_list = list(df)   # get a list of the columns
    col_list[0], col_list[1] = col_list[1], col_list[0]
    df.columns = col_list   # assign back
    

    【讨论】:

    • 谢谢,但这并不是我真正想要的。这确实会反转列,但我想知道我的 df 中是否存在重复,其中两列之间的值已被反转。
    • 感谢您和 @jezrael 引导我找到解决方案。只需反转列并合并!谢谢。
    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 2020-06-23
    • 2016-04-03
    • 2021-01-04
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多