行が欠落している巨大なファイルがあります。データは国に根ざしている必要があります。
入力データは次のようになります。
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)