Создание вспышки json для использования в D3 из pandas dataframe - PullRequest
0 голосов
/ 28 января 2020

У меня есть фрейм данных, который я хочу преобразовать в иерархическую вспышку json для использования в визуализации D3 следующим образом: Sunburst D3

Мой фрейм данных содержит иерархические данные, такие как как это:

enter image description here

И вывод, который я хочу, должен выглядеть следующим образом:

{"name": "flare","children": 
    [
        {"name": "Animal", "children": 
            [
                {"name": "Mammal", "children":
                    [
                        {"name": "Fox","value":35000}, 
                        {"name": "Lion","value":25000}
                    ]
                },
                {"name": "Fish", "children":
                    [
                        {"name": "Cod","value":35000} 
                    ]
                }
            ]
        },
        {"name": "Plant", "children": 
            [
                {"name": "Tree", "children":
                    [
                        {"name": "Oak","value":35000} 
                    ]
                }
            ]
        }
     ]
} 

Я пробовал несколько подходов, но не могу понять это правильно. Вот мой нерабочий код, вдохновленный этим постом: Pandas до D3. Сериализация кадров данных до JSON

from collections import defaultdict
import pandas as pd
df = pd.DataFrame({'group1':["Animal", "Animal", "Animal", "Plant"],'group2':["Mammal", "Mammal", "Fish", "Tree"], 'group3':["Fox", "Lion", "Cod", "Oak"],'value':[35000,25000,15000,1500]  })
tree = lambda: defaultdict(tree)  
d = tree()
for _, (group0,group1, group2, group3, value) in df.iterrows():
    d['name'][group0]['children'] = group1
    d['name'][group1]['children'] = group2
    d['name'][group2]['children'] = group3
    d['name'][group3]['children'] = value


json.dumps(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...