如何在没有索引的熊猫中将数据框转换为字典

时间:2018-09-28 03:20:00

标签: python pandas dictionary dataframe

我有一个数据帧df,如下所示:

| name  | coverage |
|-------|----------|
| Jason | 25.1     |

我想将其转换为字典。 我在pandas中使用了以下命令:

dict=df.to_dict()

dict的输出给了我以下内容:

{'coverage': {0: 25.1}, 'name': {0: 'Jason'}} 

我不希望在输出中使用0。我认为这是由于我的数据帧df中的列索引而捕获的。 我该怎么做才能消除输出中的0 (我不想捕获索引。)预期输出:

{'coverage': 25.1, 'name': 'Jason'} 

3 个答案:

答案 0 :(得分:4)

当我看到有两列的数据集时,我看到的是一个序列,而不是一个数据框。

尝试以下操作:d = df.set_index('name')['coverage'].to_dict(),它将把您的数据框转换为序列并输出。

但是,如果您打算有更多的列而不是一个公共键,则可以将它们存储在数组中,而不是使用“ records”。 d = df.to_dict('r')。 `

可运行的代码:

import pandas as pd

df = pd.DataFrame({
    'name': ['Jason'],
    'coverage': [25.1]
})

print(df.to_dict())
print(df.set_index('name')['coverage'].to_dict())
print(df.to_dict('r'))

返回:

{'name': {0: 'Jason'}, 'coverage': {0: 25.1}}
{'Jason': 25.1}
[{'name': 'Jason', 'coverage': 25.1}]

还有一件事,请尽量避免使用保留的变量名dict。

答案 1 :(得分:2)

dict1 = df.to_dict('records')

dict2 = df.to_dict('list')

list:键是列名,值是列数据的列表

records:每一行成为一个字典,其中key是列名,value是单元格中的数据

答案 2 :(得分:0)

如果它只有 1 列,则将 1 列切片(它被转换为系列)并包装在一个 dict 函数中

dict( myDF.iloc[:, -1] )
# [: , -1] means: return all rows, return last column)

{Jason: 25.1}