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

Pandas使用map时拆分元组输出的最佳实践与报错解决

解决Pandas映射多返回值函数拆分列的报错问题

你碰到的ValueError: too many values to unpack (expected 3),是因为直接用map返回的Series赋值给多列时,Python会尝试把整个Series的所有元素(这里是7个元组)拆成3个变量,自然不匹配导致报错。

两种可行的解决方案:

方案一:用apply搭配pd.Series

把函数返回的每个元组直接转成一行三列的Series,Pandas会自动匹配到DataFrame的新列中:

import pandas as pd

def last_3_divisions(number: int, divide_by: int):
    last_3 = {3: None, 2: None, 1: None}
    for x in range(3, 0,-1):
        number = number / divide_by
        last_3[x] = number 
    return last_3[3], last_3[2], last_3[1]

mydf = pd.DataFrame([8,6,7,5,3,0,9], columns=["mynum"])

# 修改后的赋值方式
mydf[["d3", "d2", "d1"]] = mydf["mynum"].apply(lambda x: pd.Series(last_3_divisions(x, 2)))

方案二:将map结果转为列表后构建DataFrame

先通过map得到含元组的Series,再把它转成列表,用这个列表直接创建DataFrame并赋值给新列:

# 先获取所有元组组成的Series
tuple_results = mydf["mynum"].map(lambda x: last_3_divisions(x, 2))
# 转成列表后构建DataFrame,指定索引和原表一致
mydf[["d3", "d2", "d1"]] = pd.DataFrame(tuple_results.tolist(), index=mydf.index)

两种方法都能正确把函数返回的三个值分别拆到d3、d2、d1三列里,解决报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:14:55