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

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

问题描述

如何将如下格式的嵌套字典:

{'00OZ2dKSA5jUfvF': {1: (48947218088,),
      2: (48947218089,),
      3: (48947218088, 48947218089)}}

转换为如下结构的pandas DataFrame?

idcombination_idvalue
00OZ2dKSA5jUfvF148947218088
00OZ2dKSA5jUfvF248947218089
00OZ2dKSA5jUfvF348947218088
00OZ2dKSA5jUfvF348947218089

解决方案

方法一:手动构建数据行(逻辑直观)

通过嵌套循环遍历字典的每一层,将每个值拆分为单独的数据行,最后转换为DataFrame:

import pandas as pd

# 原始数据
raw_data = {'00OZ2dKSA5jUfvF': {1: (48947218088,),
      2: (48947218089,),
      3: (48947218088, 48947218089)}}

# 存储所有数据行的列表
data_rows = []
for id_str, combo_dict in raw_data.items():
    for combo_id, value_tuple in combo_dict.items():
        # 遍历元组中的每个值,生成独立行
        for val in value_tuple:
            data_rows.append({
                'id': id_str,
                'combination_id': combo_id,
                'value': val
            })

# 转换为目标DataFrame
target_df = pd.DataFrame(data_rows)
print(target_df)

方法二:利用pandas内置方法(代码简洁)

借助explode等方法,无需手动循环即可完成转换:

import pandas as pd

raw_data = {'00OZ2dKSA5jUfvF': {1: (48947218088,),
      2: (48947218089,),
      3: (48947218088, 48947218089)}}

# 外层字典转为DataFrame,拆分出id列和组合数据列
df = pd.Series(raw_data).reset_index(name='combo_data')
# 展开组合数据列
df = df.explode('combo_data').reset_index(drop=True)
# 将组合数据拆分为combination_id和value列
df[['combination_id', 'value']] = pd.DataFrame(df['combo_data'].tolist(), index=df.index)
# 展开value列并清理冗余列
df = df.explode('value').drop('combo_data', axis=1)
# 调整列顺序与目标一致
df = df[['id', 'combination_id', 'value']]
print(df)

两种方法最终都会输出符合要求的DataFrame,方法一适合理解底层逻辑,方法二更适合处理大规模数据场景。


内容的提问来源于stack exchange,提问作者Gliebster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:54:25