从 Pandas 数据帧创建一个 json 对象

Ris*_*tra 6 python dictionary multi-index pandas

      Groups sub-groups selections
    0   sg1    csg1       sc1
    1   sg1    csg1       sc2
    2   sg1    csg2       sc3
    3   sg1    csg2       sc4
    4   sg2    csg3       sc5
    5   sg2    csg3       sc6
    6   sg2    csg4       sc7
    7   sg2    csg4       sc8
Run Code Online (Sandbox Code Playgroud)

我有上面提到的数据框,我正在尝试创建一个 JSON 对象,如下所示:

{
  "sg1": {
    "csg1": ['sc1', 'sc2'],
    "csg2": ['sc3', 'sc4']
  },
  "sg2": {
    "csg3": ['sc5', 'sc6'],
    "csg4": ['sc7', 'sc8']
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试将熊猫 to_json 和 to_dict 与 orient 参数一起使用,但没有得到预期的结果。我还尝试按列分组,然后创建列表并将其转换为 JSON。

任何帮助深表感谢。

yat*_*atu 5

您可以groupby ['Groups','sub-groups']使用字典理解从多索引系列构建字典:

s = df.groupby(['Groups','sub-groups']).selections.agg(list)
d = {k1:{k2:v} for (k1,k2),v in s.iteritems()}

print(d)
# {'sg1': {'csg2': ['sc3', 'sc4']}, 'sg2': {'csg4': ['sc7', 'sc8']}}
Run Code Online (Sandbox Code Playgroud)