簡體   English   中英

從 .CSV 導入數據,在列內搜索

[英]Importing Data from .CSV, Searching within Columns

Python 版本:3.7.4 專業水平:初學者

我正在嘗試從包含四列的 .CSV 讀取數據:市民編號、街道名稱、鄰居和數據類型(“現有”或“新”)。 現有記錄的“鄰居”字段填充了地址,新記錄為空並需要此信息。

我正在嘗試讀取 .csv 並使用他們最近鄰居的地址(市民編號 + 街道名稱)填充新記錄。

到目前為止,我已經能夠按列讀取數據。 現在我不確定下一步如何進行。 我想首先搜索新記錄及其相關地址,然后找到最近的鄰居並用該地址填充“鄰居”字段。 任何方向將不勝感激。

數據類似於:

'Civic Number', 'Street Name', 'Neighbor', 'Data Type'
'10', 'Main St', '11 Main St', 'Existing'
'40', 'Brook St', 'NONE', 'New'
Etc.

這是我迄今為止取得的所有成就:

import sys, csv
from collections import defaultdict

columns = defaultdict(list)

with open('Test_Data.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        for (k,v) in row.items():
            columns[k].append(v)

stName = columns['StreetName']
stNum = columns['CivicNum']
Neighbor = columns['Neighbor']
Type = columns['DataType']

print(stName)
print(stNum)
print(Neighbor)
print(Type)

創建一個臨時文件,您將在其中存儲處理后的更新信息。 打開原始(用於讀取目的)和臨時(用於寫入目的)文件。 原始數據類型字段設置為新建的行,將鄰居字段更新為最接近的值(我已將其添加為 1)並創建一個新行以寫入臨時行。

from tempfile import NamedTemporaryFile
import shutil
import csv

filename = 'file.csv'
tempfile = NamedTemporaryFile(mode='w', delete=False)

fields = ['Civic Number', 'Street Name', 'Neighbor', 'Data Type']

with open(filename, 'r') as csvfile, tempfile:
    reader = csv.DictReader(csvfile, fieldnames=fields)
    writer = csv.DictWriter(tempfile, fieldnames=fields)

    for row in reader:
        if row['Data Type'] == 'New':
            row['Neighbor'] = str(int(row['Civic Number']) + 1) + ' ' + row['Street Name']
        row = {'Civic Number': row['Civic Number'], 'Street Name': row['Street Name'], 'Neighbor': row['Neighbor'], 'Data Type': 'Existing'}
        writer.writerow(row)

shutil.move(tempfile.name, filename)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM