【问题标题】:How to create dataframe from ordered dictionary?如何从有序字典创建数据框?
【发布时间】:2021-08-10 11:06:10
【问题描述】:

我有一个有 4 个键和多个值的有序字典。我试图创建这样的数据框

  df = pd.DataFrame(items, index=[0])
  print('\ndf is ',df)

但这会触发 ValueError,因为字典中的多个值不匹配。 有序字典如下:

OrderedDict([('Product', 'DASXZSDASXZS'), ('Region', ['A', 'B', 'C']), ('Items', ['1', '2', '3']), ('Order', ['123', '456', '789'])])

我希望数据框格式如下:

Product      Region Items Order
DASXZSDASXZS A      1     123
DASXZSDASXZS B      2     456
              ...

我怎样才能为数据框实现这种格式?

【问题讨论】:

    标签: ordereddict


    【解决方案1】:

    没有足够的代表发表评论。为什么要指定index=[0]? 简单的做

    df = pd.DataFrame(items)
    

    作品;如果要更改索引,可以稍后使用df.set_index(...)进行设置

    【讨论】:

      【解决方案2】:

      @viktor_dmitry 你对@Battleman 的评论链接到外部数据,这是一个解决方案。

      https://www.codepile.net/pile/GY336DYN 中,您有一个listOrderedDict 条目,在上面的示例中,您只有1 个OrderedDict。每个都需要被视为一个单独的DataFrame 构造。从结果列表中,您使用concat 获得最终的DataFrame

      ods = [OrderedDict([('MaterialNumber', '2XV9450-1AR24'), ('ForCountry'...]), 
             OrderedDict([('MaterialNumber', ...), 
             ...]
      new_df = pd.concat([pd.DataFrame(od) for od in ods])
      # new_df has 4 columns and many rows
      

      另请注意,您的示例项目中有 1 个无效,您需要将其过滤掉,其余的似乎都很好:

      ods[21]
      OrderedDict([('MaterialNumber', '4MC9672')]) # lacks the rest of the columns!
      

      【讨论】:

        猜你喜欢
        • 2019-05-27
        • 2020-05-10
        • 1970-01-01
        • 2023-02-05
        • 1970-01-01
        • 2021-12-30
        • 2016-05-22
        • 2022-06-13
        • 2016-01-14
        相关资源
        最近更新 更多