如何使用pandas将csv转换为字典?例如,我有2列,并希望column1为键,column2为值。我的数据如下:
"name","position"
"UCLA","73"
"SUNY","36"
cols = ['name', 'position']
df = pd.read_csv(filename, names = cols)
答案 0 :(得分:10)
由于示例csv-data的第1行是"标题", 使用这个单行:
>>> pd.Series.from_csv(filename, header=0).to_dict()
{'UCLA': 73, 'SUNY': 36}
如果您还要包含第一行,请移除header
关键字(或将其设置为None
)。
由于
pandas-0.21.0
方法Series.from_csv()
已被弃用,建议改为使用pandas.read_csv()
:>>> pd.read_csv(filename, index_col=0, squeeze=True).to_dict() {'UCLA': '73', 'SUNY': '36'}>
并使用它来包括dict中的第一个标题行:
>>> pd.read_csv(filename, index_col=0, squeeze=True, header=None).to_dict() {'name': 'position', 'UCLA': '73', 'SUNY': '36'}
答案 1 :(得分:7)
将列转换为列表,然后压缩并转换为dict:
In [37]:
df = pd.DataFrame({'col1':['first','second','third'], 'col2':np.random.rand(3)})
print(df)
dict(zip(list(df.col1), list(df.col2)))
col1 col2
0 first 0.278247
1 second 0.459753
2 third 0.151873
[3 rows x 2 columns]
Out[37]:
{'third': 0.15187291615699894,
'first': 0.27824681093923298,
'second': 0.4597530377539677}
答案 2 :(得分:0)
ankostis answer是磁盘上文件最优雅的解决方案。
但是,如果您不想或无法绕开文件系统的保存和加载操作,也可以这样:
df = pd.DataFrame({"name": [73, 36], "position" : ["UCLA", "SUNY"]})
series = df["position"]
series.index = df["name"]
series.to_dict()
结果:
{'UCLA': 73, 'SUNY': 36}