我有一个数据帧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'}
答案 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}