当csv没有标题时,将csv转换为字典

时间:2018-06-13 12:31:13

标签: python csv dictionary

我在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'

执行此操作的正确方法是什么

3 个答案:

答案 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)