如何从csv文件创建dict-of-dicts?

时间:2018-01-02 19:49:49

标签: python csv dictionary

如何在python中使用三个不同的值在字典中创建字典,其中date是第一个字典的键,第二个字典(city是键,下雨量是value)和第二个字典是第一个字典的值。

import csv

def read_data(file):
    open('file', 'r') as f:
        r = csv.reader(f, delimiter = ',')
        s = {}
        for row in r:
            row = vrstica[a][b]
            while a == 0 and b > 0:
                row = int(key1)
            while row == row[0]:
                row = key2
            else:
                row = value

        key1 = dict((key2,value) for row in reader)
        s = dict(key1)

    return s

2 个答案:

答案 0 :(得分:1)

如果每个城市每天都有降雨量,您可以按照以下方式进行。如果您在一天内多次访问,则可能需要list来保存每个城市的降雨数据值。

希望这会有所帮助。

s = {}
with open(csvfile, 'r') as f:
    r = csv.reader(f, delimiter = ',')    
    for row in r:
        key = row[0]
        if not key in s:
            s[row[0]]={row[1]:row[2]}
        else:
            s[row[0]].update({row[1]:row[2]})

<强> csvdata

1/1/2018    boston  5
1/1/2018    chicago 7
1/2/2018    boston  9
1/2/2018    chicago 3

词典内容

>>> s
{'1/1/2018': {'boston': '5', 'chicago': '7'}, '1/2/2018': {'boston': '9', 'chicago': '3'}}

答案 1 :(得分:0)

使用相同的例子:

import pandas as pd

data = '''\
1/1/2018    boston  5
1/1/2018    chicago 7
1/2/2018    boston  9
1/2/2018    chicago 3'''

file = pd.compat.StringIO(data) # change to path

df = pd.read_csv(file, sep='\s+', header=None, names=list('ABC'))

# Use pandas and groupby
df.groupby(df.A)['B','C'].apply(lambda x: x.set_index('B')['C'].to_dict()).to_dict()

你得到了

{'1/1/2018': {'boston': 5, 'chicago': 7},
 '1/2/2018': {'boston': 9, 'chicago': 3}}