我有一个巨大的文件,其中有一些缺失的行。数据需要植根于国家。
输入数据如下:
csv_str = """Type,Country,State,County,City,
1,USA,,,
2,USA,OH,,
3,USA,OH,Franklin,
4,USA,OH,Franklin,Columbus
4,USA,OH,Franklin,Springfield
4,USA,WI,Dane,Madison
"""
这需要是:
csv_str = """Type,Country,State,County,City,
1,USA,,,
2,USA,OH,,
3,USA,OH,Franklin,
4,USA,OH,Franklin,Columbus
4,USA,OH,Franklin,Springfield
4,USA,WI,,
4,USA,WI,Dane,
4,USA,WI,Dane,Madison
"""
根据我的逻辑,关键是Type
字段,如果我找不到城市(类型 4)的县(类型 3),则插入一行到县的字段。
与县同。如果我找不到县(类型 3)的州(类型 2),则插入一行,其中包含直到州的字段。
由于我对 python 中的设施缺乏了解,我尝试了更多的蛮力方法。这有点问题,因为我需要对同一个文件进行大量迭代。
我也尝试过 google-refine,但无法正常工作。手动操作很容易出错。
任何帮助表示赞赏。
import csv
import io
csv_str = """Type,Country,State,County,City,
1,USA,,,
2,USA,OH,,
3,USA,OH,Franklin,
4,USA,OH,Franklin,Columbus
4,USA,OH,Franklin,Springfield
4,USA,WI,Dane,Madison
"""
found_county =[]
missing_county =[]
def check_missing_county(row):
found = False
for elm in found_county:
if elm.Type == row.Type:
found = True
if not found:
missing_county.append(row)
print(row)
reader = csv.reader(io.StringIO(csv_str))
for row in reader:
check_missing_county(row)