python - 从 DataFrame 到嵌套字典

标签 python pandas dictionary

我想用这样的 DataFrame 值制作一个嵌套字典:

输入

dfdict={'country': {0: 'USA', 1: 'USA', 2: 'USA', 3: 'USA'},
 'state': {0: 'California', 1: 'California', 2: 'Texas', 3: 'Texas'},
 'city': {0: 'San Francisco', 1: 'Los Angeles', 2: 'Dallas', 3: 'Houston'},
 'attribut a': {0: 87, 1: 57, 2: 1, 3: 138},
 'attribute b': {0: 19, 1: 13, 2: 134, 3: 101},
 'attribute c': {0: 39, 1: 118, 2: 82, 3: 29}}
df=pd.DataFrame(dfdict)

    country state   city    attribut a  attribute b attribute c
0   USA California  San Francisco   87  19  39
1   USA California  Los Angeles 57  13  118
2   USA Texas   Dallas  1   134 82
3   USA Texas   Houston 138 101 29

预期输出:

defdict={"USA":{"California":{"San Francisco":{"atribute a":87,
                                          "attribute b":19,
                                           "attribute c":39},
                          "Los Angeles":{"atribute a":57,
                                          "attribute b":13,
                                           "attribute c":118}},
            "Texas":{"Dallas":{"Dallas":{"atribute a":1,
                                          "attribute b":134,
                                           "attribute c":82},
                              "Houston":{"atribute a":138,
                                          "attribute b":101,
                                           "attribute c":29}
                              }
                    }
           }
    }

不幸的是,我所做的每一次尝试都会返回一个错误。即使是从最简单的开始,例如:

dictp=df[["country","state"]].apply(lambda x: {a:b for a,b in x}, axis=1)

解决这个问题的正确方法是什么?

最佳答案

这是一个三层嵌套的 for 循环,它可以执行您想要的操作,并且至少可以作为进一步优化的起点。我将 .tolist() 放入最内层的循环中,以防该城市有多个条目。

outs={}

for i, c in df.groupby('country'):
    if outs.get(i) is None:
        outs[i] = {}
    for j, s in c.groupby('state'):
        if outs[i].get(j) is None:
            outs[i][j] = {}
        for k, city in s.groupby('city'):
            outs[i][j][k] = {
                col: city[col].tolist() for col in city.columns
            }

关于python - 从 DataFrame 到嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65861513/

相关文章:

python - numba 如何推断字面上初始化的局部变量的类型?

python - 尝试将数据插入 postgresql 时出现语法错误

python - 按具有多个值的列对 DF 进行排序

python - 确定一个字符串是否可以由另一个字符串中的字符子集组成

python - 按时间计算 DataFrame 的 EWMA

python - 如何在 Windows 7 中使用 Python 廉价地创建一个非常大的文件?

linux - shell map 是否限制 key 格式?

vb.net - 如何将值插入(字符串,列表(字符串))字典的列表部分?

python - 如何将两个 csr_matrix 合并为一个?

pandas - Jupyter Notebook 仍然截断 pandas 列