使用csv或pandas模块将python csv转换为字典

时间:2017-06-04 18:17:09

标签: python python-2.7 pandas

我正在使用Python的Fieldnames来读取CSV文件中的值,以创建一个字典,其中键是CSV中的第一行或标题,其他行是值。它按预期完美地工作,我能够获得一个字典,但我只希望某些键在字典中而不是所有列值。做这个的最好方式是什么?我尝试使用csv.reader但我不认为它具有此功能。也许这可以用熊猫来实现?

以下是我在CSV模块中使用的代码,其中import csv with open(target_path+target_file) as csvfile: reader = csv.DictReader(csvfile,fieldnames=Fieldnames) for i in reader: print i 是我想要保留在我的dict中的键。我意识到它不适用于我上面描述的内容。

{{1}}

2 个答案:

答案 0 :(得分:2)

您可以使用pandas非常简单地完成此操作。

import pandas as pd

# get only the columns you want from the csv file
df = pd.read_csv(target_path + target_file, usecols=['Column Name1', 'Column Name2'])
result = df.to_dict(orient='records')

来源:

答案 1 :(得分:1)

您可以使用to_dict方法获取dicts列表:

import pandas as pd

df = pd.read_csv(target_path+target_file, names=Fieldnames)

records = df.to_dict(orient='records')

for row in records:
    print row

to_dict文档:

In [67]: df.to_dict?
Signature: df.to_dict(orient='dict')
Docstring:
Convert DataFrame to dictionary.

Parameters
----------
orient : str {'dict', 'list', 'series', 'split', 'records', 'index'}
    Determines the type of the values of the dictionary.

    - dict (default) : dict like {column -> {index -> value}}
    - list : dict like {column -> [values]}
    - series : dict like {column -> Series(values)}
    - split : dict like
      {index -> [index], columns -> [columns], data -> [values]}
    - records : list like
      [{column -> value}, ... , {column -> value}]
    - index : dict like {index -> {column -> value}}

      .. versionadded:: 0.17.0

    Abbreviations are allowed. `s` indicates `series` and `sp`
    indicates `split`.

Returns
-------
result : dict like {column -> {index -> value}}
File:      /usr/local/lib/python2.7/dist-packages/pandas/core/frame.py
Type:      instancemethod