繁体   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