【发布时间】:2014-02-04 03:17:05
【问题描述】:
我有一个逗号分隔的 CSV 文件,其中包含 Cities、States、Zip 和 State Abbreviation。该文件中有重复的引用,带有不同的邮政编码。我的输出只需要列出 1 个城市和一个邮政编码,而不是具有所有不同邮政编码的城市的同名。
这是我在数据中的内容(csv 文件中有 26k 行)
Phoenix, Arizona, 87654, AZ
Phoenix, Arizona, 87655, AZ
Tuscon, Arizona, 98754, AZ
Tuscon, Arizona, 98755, AZ
Tuscon, Arizona, 98756, AZ
我需要的是删除重复的城市行并只保留一个。所以我的输出需要看起来像这样。
Phoenix, Arizona, 87654, AZ
Tuscon, Arizona, 98756, AZ
这是我目前拥有的代码,它不起作用。
import os, sys, csv
f1 = csv.reader(open('originalcities.csv', 'rb'))
writer = csv.writer(open("output_cities.csv", "wb"))
city = set()
for row in f1:
if row[1] not in city:
write.writerow(row)
city.add( row[1] )
我不确定代码是否对我来说是正确的以获得我正在寻找的输出。当我运行这段代码时,我得到了这个错误。
for row in f1:
_csv.Error: iterator should return strings, not bytes (did you open the file in
text mode?)
非常感谢任何帮助。谢谢。
【问题讨论】:
-
条目按状态排序?如果是这样,您可以将 row[i - 1] 与 row[i] 进行比较并只保留一个。
-
许多城市有多个邮政编码。您有什么用例可以忽略城市中的大部分邮政编码?
标签: python csv duplicates