如何从csv的“名称”列中识别重复的名称?

时间:2019-08-16 17:08:43

标签: python csv

如何导入csv文件并在列中标识重复值?我必须将每个名称与同一列中的所有其他名称进行比较,并确定是否存在重复记录。

fruits_name_field_num1 = 0
fruits_name_field_num2 = 0

#from collections import Counter 

rowCount = 0 
fruits_name1 = ''
save_fruits_name1 = ''

for line in readRecord: 
    rowCount += 1 
    row_number = str(rowCount)
    print(rowCount) 
    save_fruits_name = fruits_name
    fruits_name = (str(line[fruits_name_field_num])) 
    save_fruits_name = fruits_name 
    if fruits_name == save_fruits_name: 
        print('same_fruits_name') 
    else: 
        print('different_fruits_name')

2 个答案:

答案 0 :(得分:1)

您可以使用Pandas轻松地做到这一点。示例:

如果您的数据框看起来像这样:

       a      b
0    Bob  Sarah
1   Rick  Sarah
2  Steve   Rick
3    Bob   Matt
4    Ben    Ben
5  Steve    Bob

,您只想查找出现在该df列“ a”中的重复名称。您可以这样做:

df_duplicates = df[df.duplicated('a')]['a']
print(df_duplicates)

哪个输出:

3      Bob
5    Steve

完整代码:

import pandas as pd

df = pd.read_csv('something.csv')
print(df)
df_duplicates = df[df.duplicated('a')]['a']
print(df_duplicates)

答案 1 :(得分:1)

如果要标识重复的列名,最简单的方法是一行:

df = df.loc[:, ~df.columns.duplicated()]

df.columns.duplicated()将为每个重复的列返回布尔掩码True(因此不是第一次出现,而是所有后续出现的)。 tilda(~)与布尔型掩码相反,因此仅对于每个掩码的第一次出现,它就是True。最后,.loc[]仅选择掩码为True的那些事件。


如果在一列内,您想查看哪些值多次出现,可以使用:

dupes = {}
for col in df.columns:
    dupes[col] = df.duplicated(subset=col)