我需要从包含列表的字典中使用 MultiIndex 在 Pandas 中创建一个 DataFrame

Posted

技术标签:

【中文标题】我需要从包含列表的字典中使用 MultiIndex 在 Pandas 中创建一个 DataFrame【英文标题】:I need to create a DataFrame in Pandas with MultiIndex from a dictionary that contains a list 【发布时间】:2018-08-23 13:12:19 【问题描述】:

好的,我有这本词典:

 'a': ['foo': '1', 'bar': '30'],
 'b': ['foo': '3'],
 'c': ['foo': '184', 'bar': '25'],
 'd': ['foo': '6'],
 'e': ['bar': '4'],
 'f': ['foo': '12','bar': '1'],
'name': 'brian'

我想将其转换为具有多索引的数据框,如下所示:

            a        b        c       d          e         f
         foo bar  foo bar  foo bar  foo bar    foo bar   foo bar
  brian  1   30    3   0   184  25   6   0     0    4     12   1

有什么帮助吗?

【问题讨论】:

【参考方案1】:

我猜你会有一堆这样的字典,每个名字都应该作为 DataFrame 的索引。在这种情况下,您可以执行以下操作:

1.检索名称并将其从dict原始dict中删除:

name = my_dict['name']
del my_dict['name']

2.将您的 dict 转换为适当的形状:

 my_dict_exploded = (k,innerk):innerv for k,v in my_dict.items() for element in v for innerk,innerv in element.items()

df1 = pandas.DataFrame(my_dict_exploded,index=[name])

您的 DataFrame 将如下所示:

        a       b   c        d   e   f    
      bar foo foo bar  foo foo bar bar foo
brian  30   1   3  25  184   6   4   1  12

这与其他帖子类似:Nested dictionary to multiindex dataframe where dictionary keys are column labels @BrenBarn 的回答非常有用。

【讨论】:

以上是关于我需要从包含列表的字典中使用 MultiIndex 在 Pandas 中创建一个 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

如何从带有列表的嵌套字典构建 MultiIndex Pandas DataFrame

从具有包含 NaN 的 MultiIndex 索引的数据帧中获取值

使用元组键从字典创建 MultiIndex pandas DataFrame

构建 MultiIndex pandas DataFrame 嵌套 Python 字典

使用 MultiIndex 时如何在 Pandas 中使用转换器

Python - 从包含值列表的字典中添加具有映射值的新列