首页 > 解决方案 > Python/Pandas:跨列识别重复项

问题描述

在下面的代码中,我想识别和报告 Col1 中出现在 Col2 中的值、Col2 中出现在 Col1 中的值以及出现多次的总体值。

在下面的示例中,值 AAPL 和 GOOG 出现在 Col1 和 Col2 中。这些预计将在接下来的 2 列中被识别和报告,并且在之后的列中预计将识别和报告 Col1 或 Col2 值中的“任何”是否为 DUP。

import pandas as pd
import numpy as np
data={'Col1':['AAPL', np.nan, 'GOOG', 'MMM', np.nan, 'INTC', 'FB'],'Col2':['GOOG', 'IBM', 'MSFT', np.nan, 'GOOG', 'AAPL', 'VZ']}
df=pd.DataFrame(data,columns=['Col1','Col2'])
print (df)

# How to code after this to produce expected result?
# Appreciate any hint/help provided

这就是结果在 Excel 中的显示方式

标签: pythonpandasduplicates

解决方案


这是适用于上述代码的解决方案。它只是使用了一些带有 itterows() 的 for 循环。没有什么花哨。

df['Col3'] = False
df['Col4'] = False
df['Col5'] = False

for i,row in df.iterrows():
  if df.loc[i,'Col1'] in (df.Col2.values):
     df.loc[i,'Col3'] = True

for i,row in df.iterrows():
  if df.loc[i,'Col2'] in (df.Col1.values):
     df.loc[i,'Col4'] = True

for i,row in df.iterrows():
  if df.loc[i,'Col3'] | df.loc[i,'Col4'] == True:
     df.loc[i,'Col5'] = True

点击此处查看结果图片


推荐阅读