【问题标题】:Using pandas, identify similar values between columns [duplicate]使用熊猫,识别列之间的相似值[重复]
【发布时间】:2020-08-13 23:59:24
【问题描述】:

我有两列,

A         B         
2001     2003
2003     1999
1990     2001
1995     2010
2004     1996

我想检查两列之间是否存在相似的值,无论行如何,并将其放在新列中(SIMILAR)

这是我想要的输出

A        B        SIMILAR
2001     2003     2003
2003     1999     2001
1990     2001
1995     2010
2004     1996

谢谢

【问题讨论】:

  • 请分享到目前为止已经尝试过的内容。
  • 定义“相似”。

标签: python python-3.x pandas


【解决方案1】:

设置交点的代码高尔夫(假设标准范围索引):

df['C'] = pd.Series([*{*df.A} & {*df.B}])

      A     B       C
0  2001  2003  2001.0
1  2003  1999  2003.0
2  1990  2001     NaN
3  1995  2010     NaN
4  2004  1996     NaN

【讨论】:

    【解决方案2】:

    要查找重复值,您可以执行以下操作:

    duplicateRowsDF = pdData[pdData.duplicated()]
    print("Duplicate Rows except first occurrence based on all columns are :")
    print(duplicateRowsDF)
    

    响应应该是这样的:

    SIMILAR
    2003
    2001
    

    然后您只需使用这些新数据创建一个新列

    pdData["Similar"] = duplicateRowsDF
    

    【讨论】:

      【解决方案3】:

      如果“相似”是指相等,我会使用 isin 方法解决这个问题。我还假设新列中值的顺序无关紧要。

      >>> df['SIMILAR'] = df.loc[df['A'].isin(df['B']), 'A']
      >>> df
            A     B  SIMILAR
      0  2001  2003   2001.0
      1  2003  1999   2003.0
      2  1990  2001      NaN
      3  1995  2010      NaN
      4  2004  1996      NaN
      

      【讨论】:

        【解决方案4】:

        IIUC 你可以使用isin:

        df[df['A'].isin(df['B'])]['A'].values
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-04-03
          • 2021-10-16
          • 2017-01-11
          • 1970-01-01
          • 2021-04-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多