【问题标题】:Convert a dictionary to a pandas dataframe将字典转换为 pandas 数据框
【发布时间】:2017-07-16 22:31:07
【问题描述】:

我正在尝试将只有 1 条记录的字典转换为 pandas 数据框。我使用了其他解决方案中的以下代码:

d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}

pd.DataFrame(d.items(), columns=['id', 'cost','name'])

但我收到以下错误:

PandasError: DataFrame constructor not properly called!

【问题讨论】:

标签: python pandas dictionary dataframe


【解决方案1】:

虽然这个问题确实有重复 (Python Dictionary to Pandas Dataframe),但我相信答案比那里提供的更简单。

将值转换为列表:

d = {'id': ['CS2_056'], 'cost': [2], 'name': ['Tap']}

那么简单:

df = pd.DataFrame(d)
print(df)
#     cost       id name
#  0     2  CS2_056  Tap


请记住,如果列顺序很重要,您仍然需要明确提供 columnsDataFrame

df = pd.DataFrame(d, columns=['id', 'cost', 'name'])
print(df)
#          id  cost name
#  0  CS2_056     2  Tap

【讨论】:

    【解决方案2】:

    你的dict只有一个记录使用列表:

    import pandas as pd
    d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}
    df = pd.DataFrame([d], columns=d.keys())
    print df
    

    输出:

       id  cost name
    0  CS2_056     2  Tap
    

    【讨论】:

    • 这行得通。我从另一个问题中得到了我原来的解决方案,但也许它不起作用的原因是因为它只有 1 条记录?
    • 已经做了将近 30 分钟而不是 [d],感谢您的解决方案。
    【解决方案3】:

    可能你正在使用python3。 在python3中我们有列表

    pd.DataFrame(list(d.items()), columns=['id', 'cost','name'])
    

    【讨论】:

      【解决方案4】:

      从字典中创建具有单行的数据框的另一种方法是先创建一个空数据框,然后将appending 分配给它:

      import pandas as pd 
      d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}
      df = pd.DataFrame().append(d, ignore_index=True)
      print(df)
      
         cost       id name
      0   2.0  CS2_056  Tap
      

      请注意,此方法比@Serenity 的解决方案慢得多,因此如果您担心性能,请绝对不要选择此方法。 但是有选择总是好的。

      【讨论】:

        【解决方案5】:

        将索引参数传递给 DataFrame 构造函数在 python 3 中有效。

        import pandas as pd
        
        d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}
        df = pd.DataFrame(d, index=[0])
        print(df)
        
        # Output:
        #           id  cost name
        #   0  CS2_056     2  Tap
        

        【讨论】:

          【解决方案6】:

          简单的命令,只需确保将字典括在方括号中即可。

          d =  {'id': 'CS2_056', 'cost': 2, 'name': 'Tap'}
          
          df = pd.DataFrame([d])
          df
          

          【讨论】:

            猜你喜欢
            • 2019-02-22
            • 2020-12-22
            • 2018-09-12
            • 1970-01-01
            • 2014-06-12
            • 2021-11-28
            • 2022-01-07
            • 2016-08-03
            相关资源
            最近更新 更多