如何使用熊猫将csv转换为字典

Posted

技术标签:

【中文标题】如何使用熊猫将csv转换为字典【英文标题】:how to convert csv to dictionary using pandas 【发布时间】:2014-05-28 05:50:25 【问题描述】:

如何使用 pandas 将 csv 转换为字典?例如,我有 2 列,希望 column1 成为键,column2 成为值。我的数据如下所示:

"name","position"
"UCLA","73"
"SUNY","36"

cols = ['name', 'position']
df = pd.read_csv(filename, names = cols)

【问题讨论】:

【参考方案1】:

由于示例 csv-data 的第一行是“标题”, 您可以使用pandas.read_csv()squeeze 关键字将其读为pd.Series

>>> pd.read_csv(filename, index_col=0, header=None, squeeze=True).to_dict()
'UCLA': 73, 'SUNY': 36

如果您还想包含第一行,请删除 header 关键字(或将其设置为 None)。

【讨论】:

请问为什么squeeze,好吗? 因为它读取 2 列 CSV 作为序列,正如解释的那样,它具有 to_dict() 方法,因此它应该比填充完整数据框和 压缩更有效>(接受的答案)。【参考方案2】:

将列转换为列表,然后压缩并转换为字典:

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于如何使用熊猫将csv转换为字典的主要内容,如果未能解决你的问题,请参考以下文章

如何使用熊猫将成绩转换为积分?

如何将csv文件转换为numpy数组格式?

如何将嵌套字典转换为熊猫数据框?

如何将包含元组列表的字典中的字典转换为熊猫数据框

在熊猫中如何将符号转换为整数?

将熊猫数据转换为数组