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

Sym*_*ony 11 python dictionary dataframe pandas

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

| name  | coverage |
|-------|----------|
| Jason | 25.1     |
Run Code Online (Sandbox Code Playgroud)

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

dict=df.to_dict()
Run Code Online (Sandbox Code Playgroud)

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

{'coverage': {0: 25.1}, 'name': {0: 'Jason'}} 
Run Code Online (Sandbox Code Playgroud)

我不希望0在我的输出中。我相信这是由于我的dataframe中的列索引而捕获的df。我应该怎么做才能0在输出中消除(我不希望捕获索引。)预期输出:

{'coverage': 25.1, 'name': 'Jason'} 
Run Code Online (Sandbox Code Playgroud)

Ant*_*vBR 13

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

试试这个: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'))
Run Code Online (Sandbox Code Playgroud)

返回值:

{'name': {0: 'Jason'}, 'coverage': {0: 25.1}}
{'Jason': 25.1}
[{'name': 'Jason', 'coverage': 25.1}]
Run Code Online (Sandbox Code Playgroud)

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

  • 很棒的神奇变量。感谢您的回答,这正是我正在寻找的:) (2认同)

Ch *_*man 9

你可以这样做:

data.to_dict('list')

#output:
#{'Feeling low in energy-slowed down': [2, 4, 2, 4]}
Run Code Online (Sandbox Code Playgroud)


asi*_*imo 8

dict1 = df.to_dict('records')
Run Code Online (Sandbox Code Playgroud)

要么

dict2 = df.to_dict('list')
Run Code Online (Sandbox Code Playgroud)

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

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