[英]I want to create a nested dictionary from a csv file with headers as keys
[英]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)
嘗試使用熊貓:
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.