Python 从字典值列表创建dataframe

Python 从字典值列表创建dataframe,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有一个字典,我想创建一个数据框,其中的列是每个键的所有单独值。例如,如果字典如下所示: d = {'gender': 'female', 'company': ['nike', 'adidas'], 'location': ['chicago', 'miami'], 'plan': 'high'} female nike adidas chicago miami high 1 1 1 1 1 1

我有一个字典,我想创建一个数据框,其中的列是每个键的所有单独值。例如,如果字典如下所示:

d = {'gender': 'female',
     'company': ['nike', 'adidas'],
     'location': ['chicago', 'miami'],
     'plan': 'high'}
female  nike  adidas  chicago  miami  high
1       1     1       1        1      1
我希望数据帧如下所示:

d = {'gender': 'female',
     'company': ['nike', 'adidas'],
     'location': ['chicago', 'miami'],
     'plan': 'high'}
female  nike  adidas  chicago  miami  high
1       1     1       1        1      1

您可以执行
分解
+
值\u计数

df=pd.Series(d).explode().value_counts().to_frame(0).T
   chicago  female  nike  miami  high  adidas
0        1       1     1      1     1       1

这里有一个简单的解决方案,但它是有效的。其想法是:

  • d
    字典组织到计数器字典中,如
  • 然后从那里,你可以创建一个
  • 代码如下:

    # 1. create list to count 
    out = []
    for value in d.values():
        if isinstance(value, list):
            out.extend(value)
        else:
            out.append(value)
    # out = ['female', 'nike', 'adidas', 'chicago', 'miami', 'high']
    
    # 2. count occurrence of each unique item in this out list
    from collections import Counter
    count = Counter(out)
    
    # 3. pandas df from dictionary
    import pandas as pd
    pd.DataFrame([Counter(out)])
    
    # output:
    # female  nike  adidas  chicago  miami  high
    # 1       1     1       1        1      1
    

    我想你需要再解释一下这个问题。我得到错误“Series对象没有属性'explode'”。当有一个列表(如“公司”和“位置”)时,我可以不使用explode吗?@hirshg将您的panda更新为最新的,explode在0.25之后。数据来自另一个来源,因此很遗憾,我不能这样组织字典。