簡體   English   中英

Python:在兩個csv文件之間匹配值

[英]Python: Match values between two csv files

我正在解析兩個不同的csv文件,需要在它們之間匹配一列。 當前,當我運行代碼段時,實際上兩個csv文件之間存在匹配的地址時,它不返回匹配值。 我遇到的問題是OnlineData csv文件中的addresss字段的縮寫。 例如:

In the Addresses csv                             In the OnlineData csv
  4587 Newton Road                                    4587 Newton Rd
  7854 Food Court                                     7854 Food Ct

查找匹配值時,如何告訴Python 在兩個csv文件中查找數字('4587')和第一個單詞('Newton')。

import csv


Addresses = set()

with open ('Addresses.csv') as f:
    for row in csv.reader(f):
        Addresses.add(row[1])

OnlineData = set()

with open ('C:/Users/OnlineData.csv') as g:
    for row in csv.reader(g):
        PermitData.add(row[1])


results = Addresses & OnlineData


print 'There are', len(results), 'matching addresses between the two csv files'

for result in sorted(results):
    print result

由於您只對匹配數據的部分感興趣,因此您最好將該部分加載到set ,然后執行交集。

import csv

Addresses = set()
with open ('Addresses.csv') as f:
    for row in csv.reader(f):
        portion = ' '.join(row[1].split()[:-1])  # Loads "4587 Newton" instead of "4587 Newton Road"
        Addresses.add(portion)

OnlineData = set()
with open ('C:/Users/OnlineData.csv') as g:
    for row in csv.reader(g):
        portion = ' '.join(row[1].split()[:-1])
        OnlineData.add(portion)

results = Addresses & OnlineData

print 'There are', len(results), 'matching addresses between the two csv files'

for result in sorted(results):
    print result

明顯的缺點是您丟失了一些信息,您仍然可以檢索這些信息。 另一種選擇是,以標准化的輸入,這意味着你可以替換RdRoadCtCourt無論那些出現,這樣才能始終匹配信息。

暫無
暫無

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

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