我有一个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
这会加载标题,现在我想加载每个值。
答案 0 :(得分:3)
您可以使用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)
答案 1 :(得分:2)
尝试使用pandas:
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
答案 2 :(得分:2)
你可以试试这个,只需使用内置的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]}