0
我有一個巨大的文件,其中有一些缺失行。數據需要植根於國家。的CSV - 插入缺少的行
輸入數據是這樣的:
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
字段,其中,如果我不能找到一個縣(類型3)對於一個城市(類型4),然後插入一行到達縣的字段。
同樣的,縣。如果我找不到一個州(類型2)爲一個縣(類型3),那麼插入一行到最多州的字段。
由於我缺乏對python中的設施的理解,我正在嘗試更多的蠻力方法。這是有點問題,因爲我需要對同一個文件進行大量迭代。
我也試過谷歌精煉,但無法得到它的工作。手動操作很容易出錯。
任何幫助表示讚賞。
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)
所以,你只是想生成缺少的國家的名單? – martineau