【问题标题】:How to create dict of dicts using csv file如何使用 csv 文件创建字典的字典
【发布时间】:2019-01-06 03:50:53
【问题描述】:

我想创建一个字典,键是 csv 文件的第一行,值是{第一列:对应列到行}的字典,例如 test.csv

Header1, Header2, Header3
A,       1,       10
B,       2,       20
C,       3,       30

我正在使用data.drop(['Header1'], 1) 删除Header1

我希望得到的字典是:

{'Header2':{A:1, B:2, C:3},'Header3':{A:10, B:20, C:30}}

我应该使用csv.DictReader 吗?还是用 numpy 数组代替?

【问题讨论】:

  • 你不是说{'Header2':{A:1, B:2, C:3},'Header3':{A:10, B:20, C:30}} 吗?
  • 随便to_dict
  • 如果您的问题得到解决,请将其中一个答案标记为正确

标签: python pandas csv dictionary


【解决方案1】:

使用熊猫,

df = pd.read_csv(testcsv, index_col=['Header1'], sep=',\s+')
df.to_dict()

输出:

{'Header2': {'A': 1, 'B': 2, 'C': 3}, 'Header3': {'A': 10, 'B': 20, 'C': 30}}

【讨论】:

  • 这是说 ValueError: Index Header1 invalid?
  • 尝试index_col=[0],因为它不会显示您的 csv 第一列是“Header1”。
【解决方案2】:

另一个没有 pandas 的例子:

import csv

with open('data_all.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    dicts = {entry:{} for entry in next(reader)[1:]}
    for row in reader:
        index = 0
        for _dict in dicts.values():
            index+=1
            _dict[row[0]]=row[index]

    print(dicts)

{' Header2': {'A': ' 1', 'B': ' 2', 'C': ' 3'}, ' Header3': {'A': ' 10', 'B': ' 20', 'C': ' 30'}}

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2022-11-05
    • 2011-10-08
    • 2012-12-15
    • 2012-01-02
    • 2016-11-22
    相关资源
    最近更新 更多