【发布时间】:2013-05-19 12:34:24
【问题描述】:
我有一个 CSV 文件,其中包含大约 30,000 行数据和 24 列。最后一列是地理列,如下所示:
Ethiopia
IL
IL
TX
TX
MD
NY
NY
Ethiopia
Ethiopia
Sweden
CA
CA
HI
Latvia
OH
现在我只希望包含所有行的整个 CSV 与美国的地理位置相对应,这将是 2 个字符的州缩写(CA、HI、OH 等)
基本上,我希望 CSV 中的所有数据都删除任何与美国无关的数据,或者如果可能的话甚至更好,按美国的位置排列前 X 行,其余的按 CSV 末尾的所有其他数据排列。
到目前为止,这是我的代码:
import csv
ask = "Y"
while ask != "N":
inputfile = input("Please enter filename: ")
filename = open(inputfile, "r")
data = []
with filename as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
if len(row[24]) == 3:
data = row[24]
datalist = row[0:23].join(data)
output = open("Newly Created Data.csv","w")
output.write(datalist)
print ("Done.")
output.close()
ask = input("Another file, Y or N? ")
它通过仅读取美国位置正确排列第 24 列中的数据,但我不知道如何对文件的其余部分和其他 23 列进行排序以仅与美国位置匹配。
我正在使用 Python 3,谢谢。
【问题讨论】:
-
所以您想删除所有内容与 CA、HI、OH 等任何缩写不匹配的行(美国各州?)
-
正确,或者最好将美国位置排序在 CSV 的顶部,其余位置在底部。