簡體   English   中英

使用標題從csv創建字典

[英]Create Dictionary from csv with headers

我有一個csv文件,看起來像:

a, b, c, d
1, 1, 2, 2
2, 3, 3, 4
2, 2, 1, 1

我想將此csv文件加載到字典中,以便獲取

dict['a'] = 1, 2, 2
dict['b'] = 1, 3, 2
dict['c'] = 2, 3, 1
dict['d'] = 2, 4, 1

有沒有辦法在csv閱讀器級別執行此操作?

我已經走了這么遠:

    import csv

    headers = {}

    with open('file.csv') as csvfile:

        reader = csv.reader(csvfile, delimiter = ',')
        count = 0;
        for row in reader:
            if count == 0:
                for field in row:
                    if field not in headers.keys():
                        headers[field] = []
            count +=1   

這將加載標題,現在我想加載每個值。

您可以使用DictReader 但是,如果輸入文件在字段值周圍包含空格,則需要手動刪除它們。

import csv

with open('file.csv') as csvfile:
    reader = csv.DictReader(csvfile, skipinitialspace=True)
    d = {name: [] for name in reader.fieldnames}
    for row in reader:
        for name in reader.fieldnames:
            d[name].append(row[name])
    print(d)

由於@temporalwolfDialect.skipinitialspace絕招!

嘗試使用熊貓:

import pandas as pd

df = pd.read_csv('YOUR_PATH_HERE')

your_dict = df.to_dict(orient='list')

輸出:

{'a': [1, 2, 2], ' b': [1, 3, 2], ' c': [2, 3, 1], ' d': [2, 4, 1]}

另外,Pandas Dataframes可能是一個非常好的工具,而不是使用字典。 這是to dict的文獻

您可以嘗試使用內置的csv模塊和字典理解功能:

import csv

data = list(csv.reader(open('file.csv')))

final_data = {i[0]:map(int, i[1:]) for i in zip(*data)}

輸出:

{'a': [1, 2, 2], ' b': [1, 3, 2], ' d': [2, 4, 1], ' c': [2, 3, 1]}

暫無
暫無

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

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