You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含数组的嵌套字典转换为指定结构的Pandas DataFrame

嵌套字典转Pandas多列DataFrame解决方案

问题描述

我有如下结构的嵌套字典:

{'hostname1': {1 : {'ip1': ['a','b','c']}}, 'hostname2': {2 : {'ip2': ['d','e','f']}}}

其宏观结构可表示为:

dict={{{}[]}} 或 dict[hostname][id][ip][letter_list]

我希望将该字典转换为包含hostname、id、ip、letter四列的Pandas DataFrame,示例结构如下:

hostnameidipletter
hostname11ip1a
hostname11ip1b
hostname11ip1c
hostname22ip2d
...........

直接使用df = pd.DataFrame(dict)无法实现需求,请求解决方法。

解决方法

方法一:手动遍历生成数据列表

逐层遍历嵌套字典,把每个元素拆成DataFrame需要的行数据,逻辑清晰易懂:

import pandas as pd

# 示例数据
data_dict = {'hostname1': {1 : {'ip1': ['a','b','c']}}, 'hostname2': {2 : {'ip2': ['d','e','f']}}}

rows = []
# 遍历主机名层
for hostname, id_dict in data_dict.items():
    # 遍历id层
    for id_val, ip_dict in id_dict.items():
        # 遍历ip层
        for ip, letters in ip_dict.items():
            # 遍历每个字母,生成行
            for letter in letters:
                rows.append({
                    'hostname': hostname,
                    'id': id_val,
                    'ip': ip,
                    'letter': letter
                })

# 转成DataFrame
df = pd.DataFrame(rows)
print(df)

方法二:用pd.json_normalize结合explode简化操作

利用Pandas内置函数处理嵌套结构,适合更复杂的场景:

import pandas as pd

data_dict = {'hostname1': {1 : {'ip1': ['a','b','c']}}, 'hostname2': {2 : {'ip2': ['d','e','f']}}}

# 外层转Series,重置索引得到hostname列
s = pd.Series(data_dict).rename('data')
df = s.reset_index().rename(columns={'index': 'hostname'})

# 展开id层,提取id和对应的ip数据
df = df.explode('data').reset_index(drop=True)
df['id'] = df['data'].apply(lambda x: list(x.keys())[0])
df['ip_data'] = df['data'].apply(lambda x: list(x.values())[0])

# 展开ip层,提取ip和字母列表
df = df.explode('ip_data').reset_index(drop=True)
df['ip'] = df['ip_data'].apply(lambda x: list(x.keys())[0])
df['letter'] = df['ip_data'].apply(lambda x: list(x.values())[0])

# 展开字母列表并清理冗余列
df = df.explode('letter').drop(columns=['data', 'ip_data'])
print(df)

内容的提问来源于stack exchange,提问作者César Rafael Sorgato Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:20:30