我在csv文件中有以下格式的数据,我希望将此csv数据转换为以第一个属性为键,其余为值的字典
user115,1,4,8,6
user142,0,2,1,11
user145,0,0,0,3
user148,5,9,22,8
user151,2,7,8,8
注意:在我的csv文件中没有标题行。我必须明确提供。
我尝试使用CSV DictReader使用以下代码段转换它但是它给我错误/未提供预期结果
reader = csv.DictReader(open(file_name),'rb', fieldnames=('key','val1','val2','val3','val4'))
给我
TypeError: __init__() got multiple values for argument 'fieldnames'
执行此操作的正确方法是什么
答案 0 :(得分:2)
您可以通过pandas
执行此操作import pandas as pd
d = pd.read_csv(file_name, header=None, index_col=0)
d.T.to_dict("list")
>>> {'user115': [1, 4, 8, 6],
'user142': [0, 2, 1, 11],
'user145': [0, 0, 0, 3],
'user148': [5, 9, 22, 8],
'user151': [2, 7, 8, 8]}
答案 1 :(得分:1)
使用csv module
。
<强>实施例强>
import csv
d = {}
with open(filename, "rU") as infile:
reader = csv.reader(infile)
for line in reader:
d[line[0]] = line[1:]
print(d)
<强>输出:强>
{'user148': ['5', '9', '22', '8'], 'user142': ['0', '2', '1', '11'], 'user145': ['0', '0', '0', '3'], 'user151': ['2', '7', '8', '8'], 'user115': ['1', '4', '8', '6']}
答案 2 :(得分:1)
您可以使用csv
模块和此代码段
def csv_dict_list(path, fieldnames):
csv_dict_list = []
with open(path, 'r') as csv_file:
reader = csv.DictReader(csv_file, fieldnames = field_names)
for row in reader:
csv_dict_list.append(row)
return csv_dict_list
path = 'YOUR/PATH/HERE/file.csv'
fieldnames
应该是一个列表,例如:
field_names = ['Column A', 'Column B', 'Column C', 'Column D', 'Column E']
然后你只需要调用方法
newdict = {}
newdict = csv_dict_list(path, fieldnames)