繁体   English   中英

使用python的csv文件中的列中的唯一元素

[英]Unique elements in columns in csv file using python

我有一个用分号分隔的csv文件,其格式如下:

indx1; string1; char1; entry1 
indx2; string1; char2; entry2 
indx3; string2; char2; entry3 
indx4; string1; char1; entry4 
indx5; string3; char2; entry5 

我想以列表的形式(不使用pandas或numpy)获得此文件的第一和第二列的唯一条目。 特别是这些是我想要的列表:

[string1, string2, string3] 
[char1, char2]

顺序无关紧要,我希望操作很快。

目前,我正在使用以下命令读取文件(例如“ data.csv”)

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

我正在使用python 2.7。 实现我想要的功能的最快方法是什么? 我将不胜感激。

您可以使用集合来跟踪所需列中已经看到的值。 因为您说顺序无关紧要,所以您可以在处理完所有行之后将集合转换为列表:

import csv

col1, col2 = set(), set()

with open('data.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';', skipinitialspace=True)        
    for row in csv_reader:
        col1.add(row[1])
        col2.add(row[2])

print list(col1), list(col2)  # ['string1', 'string3', 'string2'] ['char2', 'char1']

这应该工作。 您可以将其用作基准。

myDict1 = {}
myDict2 = {}
with open('data.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';')
    for row in csv_reader:
        myDict1[row[1]] = 0
        myDict2[row[2]] = 0

x = myDict1.keys() 
y = myDict2.keys() 

暂无
暂无

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

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