python的pandas模块将多列数据库表转为树状children结构

本文介绍了如何使用Python的pandas库,结合sqlite3数据库,通过groupby函数将数据转换为树状children结构,以便于在echarts中展示层级关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目标

使用python的pandas模块,利用groupby功能,将多列数据 库表转为树状children结构,用于echarts的树状展示。

二、数据库

(一)使用sqlite3的数据库,建表及插入字段语句如下:

DROP TABLE if exists t_层级数据;
-- 创建层级数据表
CREATE TABLE t_层级数据(
    id integer primary key autoincrement,
    name1 text,
    name2 text,
    name3 text,
    name4 text,
    post text
)

INSERT INTO t_层级数据(name1,name2,name3,name4) values('a','b','c','d1');
INSERT INTO t_层级数据(name1,name2,name3,name4) values('a','b','c','d');
INSERT INTO t_层级数据(name1,name2,name3,name4) values('a1','b','c','d1');
INSERT INTO t_层级数据(name1,name2,name3,name4) values('a1','b1','c1','d1');
INSERT INTO t_层级数据(name1,name2,name3,name4) values('a','b1','c1','d');
INSERT INTO t_层级数据(name1,name2,name3,name4) values('a','b1','c','d1');

在这里插入图片描述

(二)使用pandas读取文件

import pandas as pd
import sqlite3
file = "层级数据.db"
con = sqlite3.connect(file)
sql_str = "select * from t_层级数据 limit 6"
df = pd.read_sql(sql=sql_str,con=con)

三、使用pandas

(一)python程序

g_1=[]
for g_1_name,g_1_df in df.groupby('name1'):

    g_2=[]
    for g_2_name,g_2_df in g_1_df.groupby('name2'):

        g_3=[]
        for g_3_name,g_3_df in g_2_df.groupby('name3'):
                                     
            g_4 = []                        
            for g_4_name,g_4_df in g_3_df.groupby('name4'):
                print(g_4_df)
                g_4.append({'name':g_4_name,'id':g_4_df['id'].values[0]})                                                               
#             print(g_4)
            
            g_3.append({'name':g_3_name,'children':g_4})
            
#         print(g_3)
        g_2.append({'name':g_2_name,'children':g_3})
#     print(g_2) 

    g_1.append({'name':g_1_name,'children':g_2})

print(g_1)

(二)运行结果

在这里插入图片描述

(三)使用echarts展示

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值