0

我有一个有序字典,它有 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
              ...

如何为数据框实现这种格式?

4

2 回答 2

2

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

df = pd.DataFrame(items)

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

于 2021-05-21T08:28:43.343 回答
1

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

https://www.codepile.net/pile/GY336DYN你有一个list条目OrderedDict,在上面的例子中你只有 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!
于 2021-05-21T10:16:39.657 回答