pandas groupby to nested json

后端 未结 4 926
再見小時候
再見小時候 2020-11-27 05:47

I often use pandas groupby to generate stacked tables. But then I often want to output the resulting nested relations to json. Is there any way to extract a nested json fil

4条回答
  •  [愿得一人]
    2020-11-27 06:44

    I don't think think there is anything built-in to pandas to create a nested dictionary of the data. Below is some code that should work in general for a series with a MultiIndex, using a defaultdict

    The nesting code iterates through each level of the MultIndex, adding layers to the dictionary until the deepest layer is assigned to the Series value.

    In  [99]: from collections import defaultdict
    
    In [100]: results = defaultdict(lambda: defaultdict(dict))
    
    In [101]: for index, value in grouped.itertuples():
         ...:     for i, key in enumerate(index):
         ...:         if i == 0:
         ...:             nested = results[key]
         ...:         elif i == len(index) - 1:
         ...:             nested[key] = value
         ...:         else:
         ...:             nested = nested[key]
    
    In [102]: results
    Out[102]: defaultdict( at 0x7ff17c76d1b8>, {2010: defaultdict(, {'govnr': {'pati mara': 500.0, 'jess rapp': 80.0}, 'mayor': {'joe smith': 100.0, 'jay gould': 12.0}})})
    
    In [106]: print json.dumps(results, indent=4)
    {
        "2010": {
            "govnr": {
                "pati mara": 500.0, 
                "jess rapp": 80.0
            }, 
            "mayor": {
                "joe smith": 100.0, 
                "jay gould": 12.0
            }
        }
    }
    

提交回复
热议问题