【问题标题】: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