【问题标题】:Create a nested dictionary from a dataframe从数据框创建嵌套字典
【发布时间】:2021-11-16 04:40:14
【问题描述】:

我正在尝试从数据框创建嵌套字典,但不包含列名(即“描述”)作为另一个级别。

这是我的开始:

d = {"field_name": ["foo", "foo", "foo", "bar", "bar"],
  "values": ["key1", "key2", "key3", "key1", "key5"],
 "description": ["value1", "value2", "value3", "value4", "value6"]}
df = pd.DataFrame(data=d)
df.head()
field_name values description
foo key1 value1
foo key2 value2
foo key3 value3
bar key1 value4
bar key5 value6

这是我目前拥有的:

df.groupby("field_name")[["values","description"]].apply(lambda x: x.set_index("values").to_dict(orient="dict")).to_dict()

{'bar': {'description': {'key1': 'value4', 'key5': 'value6'}},
 'foo': {'description': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}}}

这就是我想要的:

{'bar': {'key1': 'value4', 'key5': 'value6'},
     'foo': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}}

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    以下python代码是您问题的解决方案

    import pandas as pd
    
    d = {"field_name": ["foo", "foo", "foo", "bar", "bar"],
         "values": ["key1", "key2", "key3", "key1", "key5"],
         "description": ["value1", "value2", "value3", "value4", "value6"]}
    df = pd.DataFrame(data=d)
    print(df.values)
    
    resultant_dict = {}
    """
    df.values is like
    [['foo' 'key1' 'value1']
     ['foo' 'key2' 'value2']
     ['foo' 'key3' 'value3']
     ['bar' 'key1' 'value4']
     ['bar' 'key5' 'value6']]
    """
    for i in df.values:
        if i[0] in resultant_dict:
            resultant_dict[i[0]][i[1]] = i[2]
        else:
            resultant_dict[i[0]] = {i[1]: i[2]}
    
    print(resultant_dict)
    
    # Resultant Dict is {'foo': {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}, 'bar': {'key1': 'value4', 
    # 'key5': 'value6'}} 
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 2019-05-22
      • 2019-01-11
      • 2020-06-04
      相关资源
      最近更新 更多