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

如何从Pandas DataFrame字典列为每个Name生成独立的拆分后DataFrame

实现方案

解决思路

  • 逐行遍历原始DataFrame,为每个Name单独处理其对应的两个字典格式列
  • 分别将Trust_Value、Affordability_Value的字典键值对转换为独立的双列子DataFrame
  • 横向拼接两个子DataFrame后补充Name字段,存入结果字典方便直接调用

如果两个字典的键值对数量不一致,拼接时缺失位置会自动填充NaN,符合常规数据处理逻辑,如有特殊对齐需求可自行补全空值。

完整代码

import pandas as pd

# 构造原始DataFrame(直接使用你提供的to_dict数据)
raw_data = {'Name': {0: 'J.', 1: 'M.', 2: 'C.'},
 'Trust_Value': {0: {'J.': 0.25, 'M.': 0.23, 'D.': 0.22, 'S.':0.12,'N.':0.12}, 
                 1: {'M.': 0.12, 'S.': 0.14, 'C.': 0.12, 'D.': 0.12}, 
                 2: {'S.': 0.21, 'N.': 0.13, 'C.':0.34, 'D.':0.12, 'T.':0.42}}, 
 'Affordability_Value':{0: {'Z.': 0.024, 'M.': 0.34, 'D.': 0.21, 'X.':0.23,'N.':0.15}, 
                        1: {'S.': 0.51, 'B.': 0.21, 'C.': 0.29, 'D.': 0.12}, 
                        2: {'D.': 0.26, 'B.': 0.26, 'C.':0.38, 'D2.':0.25, 'T.':0.42}}}
df = pd.DataFrame(raw_data)

# 存储每个Name对应结果的字典,键为Name取值,值为处理好的DataFrame
name_dfs = {}

for _, row in df.iterrows():
    current_name = row['Name']
    # 拆分Trust_Value字典为双列
    trust_df = pd.DataFrame(row['Trust_Value'].items(), columns=['Trust_Key', 'Trust_Value'])
    # 拆分Affordability_Value字典为双列
    afford_df = pd.DataFrame(row['Affordability_Value'].items(), columns=['Affordability_Key', 'Affordability_Value'])
    # 横向拼接两个子DataFrame
    merged = pd.concat([trust_df, afford_df], axis=1)
    # 首列插入Name字段
    merged.insert(0, 'Name', current_name)
    # 存入结果字典
    name_dfs[current_name] = merged

# 调用示例:获取J.对应的DataFrame
print(name_dfs['J.'])

输出说明

生成的所有独立DataFrame都存储在name_dfs字典中,你可以通过name_dfs[对应Name值]直接获取需要的DataFrame,输出格式和你要求的示例完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:36:08