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

使用拆分规则字典拆分Pandas序列时遇ValueError问题求助

问题与解决方案

场景说明

现有如下Pandas DataFrame:

columns = ['ID','DESIGN_APPROVER','PLAN APPROVER','FINAL_APPROVER']
data = [['ID_001','Sheldon,US','Leonard,Canada', 'Howard,Japan'],
        ['ID_002','Joel,UK','Tommy,Paris', 'Angelo,Ireland']]
df = pd.DataFrame(data=data , columns=columns)

数据样式:

ID      DESIGN_APPROVER PLAN APPROVER   FINAL_APPROVER
0   ID_001  Sheldon,US      Leonard,Canada  Howard,Japan
1   ID_002  Joel,UK         Tommy,Paris     Angelo,Ireland   

已定义字典split_dict,用于指定各列拆分后的新列名:

key_list = list(set(df.columns)-{'ID'})
value_list = [['{}_NAME'.format(i),'{}_LOCATION'.format(i)] for i in key_list]
split_dict = dict(zip(key_list, value_list))

split_dict内容:

{'PLAN APPROVER': ['PLAN APPROVER_NAME', 'PLAN APPROVER_LOCATION'],
 'FINAL_APPROVER': ['FINAL_APPROVER_NAME', 'FINAL_APPROVER_LOCATION'],
 'DESIGN_APPROVER': ['DESIGN_APPROVER_NAME','DESIGN_APPROVER_LOCATION']}

需要遍历该字典,按逗号分隔将键对应的列拆分为值指定的列,但尝试以下代码时触发错误:

for k,v in split_dict:
    df[v] = df[k].str.split(',', expand=True)

错误信息:

ValueError: too many values to unpack (expected 2)

错误原因

直接遍历字典时,默认仅返回字典的键,而非键值对。循环中k,v试图将单个键拆分为两个变量,导致解包值数量不匹配,触发报错。

正确实现

要遍历字典的键值对,需使用split_dict.items()方法获取每个键和对应的列名列表:

# 遍历字典的键值对
for k, v in split_dict.items():
    # 按逗号拆分列,并将结果赋值给指定的新列
    df[v] = df[k].str.split(',', expand=True)

# 可选:删除原有的待拆分列(若无需保留)
df = df.drop(list(split_dict.keys()), axis=1)

执行后,DataFrame会生成拆分后的新列,最终结果示例:

ID PLAN APPROVER_NAME PLAN APPROVER_LOCATION FINAL_APPROVER_NAME FINAL_APPROVER_LOCATION DESIGN_APPROVER_NAME DESIGN_APPROVER_LOCATION
0   ID_001             Leonard                  Canada               Howard                    Japan               Sheldon                        US
1   ID_002              Tommy                   Paris                Angelo                  Ireland                  Joel                        UK

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:25:29