如何在pandas中将dataframe转换为dictionary而无需索引

lh80um4z  于 2023-05-12  发布在  其他
关注(0)|答案(5)|浏览(271)

我有一个dataframe df如下:

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

我想把它变成一本字典。我在pandas中使用了以下命令:

dict=df.to_dict()

dict的输出如下:

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

我不希望在输出中出现0。我相信这是因为我的dataframe df中的列索引而捕获的。我可以做些什么来消除0在我的输出(我不希望索引被捕获。)预期输出:

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

ukdjmx9f1#

当我看到你的数据集有2列时,我看到的是一个系列,而不是一个 Dataframe 。
试试这个:d = df.set_index('name')['coverage'].to_dict(),它会把你的 Dataframe 转换成一个系列,然后输出。
但是,如果你的目的是有更多的列,而不是一个公共键,你可以将它们存储在一个数组中,而不是使用'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,因为它是保留的。

6ie5vjzr

6ie5vjzr2#

dict1 = df.to_dict('records')

dict2 = df.to_dict('list')

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

yqyhoc1h

yqyhoc1h3#

你可以这样做:

data.to_dict('list')

#output:
#{'Feeling low in energy-slowed down': [2, 4, 2, 4]}
9bfwbjaz

9bfwbjaz4#

如果只有1列,则将1列切片(它被转换为Series), Package 在dict函数中

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

{Jason: 25.1}
inn6fuwd

inn6fuwd5#

zip应该是另一个选择dict=dict(zip(df['name'],df['coverage']))

相关问题