【问题标题】:How to convert dataframe to dictionary in pandas WITHOUT index如何在没有索引的熊猫中将数据框转换为字典
【发布时间】:2019-03-04 00:10:13
【问题描述】:

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

【问题讨论】:

    标签: python pandas dictionary dataframe


    【解决方案1】:

    当我看到包含 2 列的数据集时,我看到的是一个系列,而不是一个数据框。

    试试这个:d = df.set_index('name')['coverage'].to_dict(),它将您的数据帧转换为系列并输出。

    但是,如果您的意图是拥有更多列而不是公共键,您可以将它们存储在数组中,而不是使用“记录”。 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,因为它是保留的。

    【讨论】:

    • 很棒的神奇变量。感谢您的回答,这正是我想要的:)
    • 太棒了..这是我一直在寻找的答案
    • 谢谢! Pandas 很棒,但有时它的选择很奇怪。
    【解决方案2】:
    dict1 = df.to_dict('records')
    

    dict2 = df.to_dict('list')
    

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

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

    【讨论】:

      【解决方案3】:

      你可以这样做:

      data.to_dict('list')
      
      #output:
      #{'Feeling low in energy-slowed down': [2, 4, 2, 4]}
      

      【讨论】:

        【解决方案4】:

        如果它只有 1 列,则将 1 列(它被转换为 Series)分割成一个 dict 函数

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

        【讨论】:

          猜你喜欢
          • 2019-07-18
          • 2018-07-14
          • 2019-05-07
          • 2020-06-30
          • 2020-12-01
          • 2020-02-13
          • 2013-12-26
          相关资源
          最近更新 更多