簡體   English   中英

在python中將csv文件導入為字典以稍后計算面積值

[英]Importing a csv file as dictionary in python to later calculate areal values

我有以下問題。 我有一個.csv文件(180個條目),看起來像這樣:

Codes,Area
3443,0
3530,0
3583,0
3589,0
3514,0

我使用以下命令將.csv文件讀入python:

input_file = csv.DictReader(open("CPC.csv"))
for row in input_file:
    print row

然后,字典如下所示:

{'Codes': '3443', 'Area': '0'}
{'Codes': '3530', 'Area': '0'}
{'Codes': '3583', 'Area': '0'}
{'Codes': '3589', 'Area': '0'}
{'Codes': '3514', 'Area': '0'}

看起來很漂亮,我真的很喜歡。 我的目的是為每個代碼計算m ^ 2中的面積值。 因此,此字典只是臨時的工作,目的是匯總所有區域的特定代碼,然后稍后再使用該值並將其重新分配給新表。 但是,我有一個問題:如何訪問我的代碼? 因此,我只想擁有這種類型的字典:

{'3443', '0'}
{'3530', '0'}
{'3583', '0'}
{'3589', '0'}
{'3514', '0'}

因此,我只需要搜索我的代碼(例如3443,然后我可以將其添加到0,這就是我的另一個表中的125m ^ 2。我看不到如何做。任何人都可以幫助請?

您的原始代碼讀取csv文件,解析格式以拆分列,然后打印每個解析的行。 它不將對象存儲在內存中。

您必須選擇是將它們全部存儲在內存中,還是要隨時處理它們並將結果存儲在其他文件中,例如另一個文件中。

從問題描述來看,您似乎將分別處理每個代碼。 但是,您沒有提供“其他表”,因此我不完全知道它的結構。

下面的示例代碼將逐個代碼讀取文件,對於每個代碼,它將在YOUR_OTHER_TABLE中搜索要放入Area字段的值。 然后它將每一行寫入單獨的結果文件。

另外,似乎您正在使用python 2,因此以下示例也使用python 2規范(例如,以二進制模式打開csv文件,而在python 3中則不希望這樣做):

with open("CPC.csv", 'rb') as f, open('CPC_result.csv', 'wb') as fw:
    csv_f = csv.DictReader(f)
    csv_w = csv.DictWriter(fw, csv_f.fieldnames)
    for row in csv_f:
        code = row['Codes']
        calculated_area = YOUR_OTHER_TABLE.get(code, 0)
        row['Area'] = str(calculated_area)
        csv_w.writerow(row)
areas = {}
input_file = csv.reader(open("CPC.csv"))
next(input_file)
for row in input_file:
    key, val = row
    areas[key] = val

print areas
#{'3443': '0', '3530': '0', '3583': '0', '3589': '0', '3514': '0'}

暫無
暫無

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

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