如何识别列表中的重复字符串?

How to identify duplicate strings in lists?

我正在从 csv 文件的 DataFrame 导入一个包含 1280(我认为)唯一 ID 的列。

我本来打算把每个ID作为键放入字典中,并设置'0'作为值。然后将所有内容放入一个新的 DataFrame 中。

从 DataFrame 中提取列作为列表时,我注意到数字减少到 1189 而不是 1280。

我想,原来的DataFrame一定有重复的。这将是一个惊喜,因为 ID 应该是唯一的 ID。我可以走捷径,只使用新 DataFrame 的列表。但是,弄清楚发生了什么并找出重复项(如果有)是至关重要的。

唯一的问题是,我无法识别任何重复项。我不知道问题出在哪里。

import pandas as pd
from itertools import cycle

DF0 = pd.read_csv("FILENAME.csv", sep='$', encoding='utf-8-sig')

l_o_0 = ['0']

l_DF0 = list(DF0['Short_ID'])
print('  len of origin object   '+str(len(DF0['Short_ID'])))
print('            l_DF0 is a   '+str(type(l_DF0)))
print('                of len   '+str(len(l_DF0))+'\n')

d_DF0 = dict(zip(DF0['Short_ID'], cycle(l_o_0)))
print('  len of origin object   '+str(len(DF0['Short_ID'])))
print('            d_DF0 is a   '+str(type(d_DF0)))
print('                of len   '+str(len(d_DF0))+'\n')

print('           difference:   '+(str(len(DF0['Short_ID'])-len(d_DF0)))+'\n')

s_DF0 = set(l_DF0)
print('            s_DF0 is a   '+str(type(s_DF0)))
print('             of length   '+str(len(s_DF0))+'\n')

red_l_DF0 = list(s_DF0)
print('        red_l_DF0 is a   '+str(type(red_l_DF0)))
print('             of length   '+str(len(red_l_DF0))+'\n')

l_prob = []
for item in l_DF0:
    if item not in red_l_DF0:
        l_prob.append(item)
print(len(l_prob))

输出为:

  len of origin object   1280
            l_DF0 is a   <class 'list'>
                of len   1280

  len of origin object   1280
            d_DF0 is a   <class 'dict'>
                of len   1189

           difference:   91

            s_DF0 is a   <class 'set'>
             of length   1189

        red_l_DF0 is a   <class 'list'>
             of length   1189

           l_prob is a   <class 'list'>
             of length   0
>>>

我根据在此处找到的内容尝试了上述方法:
Python list subtraction operation
要么是我没有正确使用工具,要么是错误的工具。 任何帮助将不胜感激 - 提前致谢!!

使用pandas'duplicated函数:

duplicated_stuff = DF0[DF0['Short_ID'].duplicated()]

根据您希望看到的内容更改复制的 keep 参数。对于调试,您可能需要 keep=False.