繁体   English   中英

在 CSV 中搜索不区分大小写的重复项?

[英]Search CSV for case insensitive duplicates?

我有一个看起来像这样的 csv:

文件.csv

name,apptype
AppABC,python
appabc,python
AppABB,python
AppABA,python
Appaba,python

我需要找出一种方法来确定是否存在任何“名称”作为不区分大小写的副本并报告结果。

在这种情况下,我应该知道以下是重复的:

AppABC,python
appabc,python
AppABA,python
Appaba,python

这是我正在尝试的,但它不起作用。

with open(appcsv_path) as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')

for name in csv_reader:
    re.findall(name, csv_reader, flags=re.IGNORECASE)

这会导致错误:

TypeError: unhashable type: 'list'

使用下面的 Pandas 方法,但将其编辑为“名称”而不是“名称”:

    df = pd.read_csv(appcsv_path)
out = df[df.Name.str.strip().str.lower().duplicated(keep=False)].loc[0:0]
print(out.to_string(index=False)) 

结果是:

Empty DataFrame
Columns: [Name, Type]
Index: []

这是使用duplicated的 pandas 解决方案

import pandas as pd
df = pd.read_csv(appcsv_path)
out = df[df.name.str.strip().str.lower().duplicated(keep=False)].loc[:,'name']

Output:

这将为您提供预期的 output

print(out.to_string(index=False))
AppABC
appabc
AppABA
Appaba

或者保留你可以做的两列

out = df[df.name.str.strip().str.lower().duplicated(keep=False)]
print(out.to_string(index=False))

这给了你

  name apptype
AppABC  python
appabc  python
AppABA  python
Appaba  python

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM