使用csv python行和列

时间:2016-12-15 03:49:35

标签: python excel csv dictionary

嘿我正在尝试使用python中的内置模块csv创建一个字典。本质上它是一个名为weather.csv的excel文件,其中行字典中的键是列标题,值是该行的值。我被卡住了,因为我无法让代码运行多个列来同时生成两个词典。另外,我得到一个关键错误,其中显示print row ['col_list'],我不明白它为什么会发生。 col_list是每行的标题。这是我到目前为止的代码:

import csv
def read_file(filename, col_list):
    filename = 'weather.csv'
    with open('weather.csv', 'r') as f:
        reader = csv.DictReader(f)      
        for row in reader:               
            print row['col_list']

这就是我想要的输出。我认为这很简单,我错过了,但我很难搞清楚。

print read_file('weather.csv', ['TemperatureF', 'VisibilityMPH'])
{'TemperatureF': [30.9, 32.0, 32.0, 32.0, 32.0, 30.9 ...],
'VisibilityMPH': [10.0, 10.0, 10.0, 10.0, 4.0, 2.5 ...]}  

2 个答案:

答案 0 :(得分:1)

如何创建包含每个列标题的键的字典以及列包含的所有值的列表?例如 -

import csv

def read_file(filename, col_list, data={}):

    with open('weather.csv', 'r') as f:

        reader = csv.DictReader(f)      
        for num, row in enumerate(reader):
            if num == 0: continue # skip if it's the first row, which has the headings
            for col in col_list:
                if not data.get(col): data[col] = list()
                data[col].append(row[col])

    return data

答案 1 :(得分:0)

如果你可以使用pandas,我认为它比csv模块更适合这项任务。

import pandas as pd
df = pd.read_csv(filename, names=col_list)
dict_ = df.to_dict()