繁体   English   中英

在python中将分层数据转换为特定的json格式

[英]convert hierarchical data to a specific json format in python

我有一个如下所示的数据框。 每个主题有几个子主题。

pd.DataFrame({'topic': ['A', 'A', 'A', 'B', 'B'],
               'sub-topic': ['A1', 'A2', 'A3', 'B1', 'B3' ],
                'value': [2,12,44,21,1]})

    topic   sub-topic   value
0   A        A1         2
1   A        A2         12
2   A        A3         44
3   B        B1         21
4   B        B3         1

我需要将其转换为 Json 格式,如下所示。 在第一层中,例如主题 A,该值是其所有子主题的总和。

{'A': {
    'value': 58,
    'children': {
        'A1': {'value': 2},
        'A2': {'value': 12},
        'A3': {'value': 44}    
       },
    },
 'B': {
     'value': 22,
     'children': {
         'B1': {'value': 21},
         'B3': {'value': 1}
      }
   }
}

有谁知道我如何将数据转换为这个特定的 json? 我不知道我应该如何处理它。 非常感谢。

GroupBy.apply使用 cusom 函数,最后使用Series.to_dictSeries.to_json

def f(x):
    d = {'value': x['value'].sum(),
         'children': x.set_index('sub-topic')[['value']].to_dict('index')}
    return (d)

#for dictonary
out = df.groupby('topic').apply(f).to_dict()

#for json
#out = df.groupby('topic').apply(f).to_json()

print (out)

{
    'A': {
        'value': 58,
        'children': {
            'A1': {
                'value': 2
            },
            'A2': {
                'value': 12
            },
            'A3': {
                'value': 44
            }
        }
    },
    'B': {
        'value': 22,
        'children': {
            'B1': {
                'value': 21
            },
            'B3': {
                'value': 1
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM