首页 > 解决方案 > 从给定列表的列中查找重复项

问题描述

示例 csv 如下所示:

    name,id
    row1,1
    row2,2
    row3,3
    custom,test
    custom,test2
    row1,4

nameRows = ['row1', 'row2', 'row3']我为要检查重复项的每一行定义了一个字符串数组。如何仅在“名称”列下检查 nameRows 中的行是否重复?并忽略其他重复行,例如“自定义”。我只想要一个打印语句,上面写着 print('{0} is a duplicate row in the name column'.format(row))

半相关的,我目前正在使用它来在名称列下存在非常需要的行,也许我可以使用相同的 for 循环来查找错误...?

for row in nameRows:
    if row not in df['name'].values:
        print("Required {0} row 'name' not found in the csv file.".format(row))

标签: pythonpython-3.xpandascsv

解决方案


选项1

nameRows = ['row1', 'row2', 'row3']

for row in nameRows:
    if len(df[df['name'].str.contains(row , na=False)]) > 1:
       print(f'Row {row} is duplicate')

选项 2

nameRows = ['row1', 'row2', 'row3']

for row in nameRows:
    if len(df[df['name'] == row]) > 1:
       print(f'Row {row} is duplicate')

如果你想反过来,请使用not条件。


推荐阅读