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

Python Pandas:如何将函数返回的元组列表转为现有DataFrame列

解决Pandas中apply函数返回元组赋值为列的错误问题

我来帮你搞定这个问题,你遇到的错误是因为Pandas处理元组赋值的方式和你预期的不一样,下面是具体的解决方案和原因分析:

可行解决方案

方法1:转换apply结果为DataFrame后赋值

这是最直接的修复方式,不需要修改原有函数:

import pandas as pd

# 假设你的df已经存在
df[['col1', 'col2']] = pd.DataFrame(df['col_text'].apply(func).tolist(), index=df.index)

或者用链式调用的更简洁写法:

df[['col1', 'col2']] = df['col_text'].apply(func).apply(pd.Series)

方法2:修改函数返回字典(如果允许调整函数)

如果可以改动func,让它返回字典而不是元组,这样赋值逻辑会更直观:

def func(text):
    # 你的原有业务逻辑
    list_a = ['1','2','3']
    list_b = ['abc','def','efg']
    return {'col1': list_a, 'col2': list_b}

# 直接赋值即可
df[['col1', 'col2']] = df['col_text'].apply(func).apply(pd.Series)

错误原因解析

你执行df[['col1','col2']] = df.col_text.apply(func)时,apply(func)返回的是一个每个元素都是元组的Series。Pandas在处理这种赋值时,会默认把元组里的每个元素当作单独的列值,但你的元组里是两个长度为3的列表,这和目标列数(2)不匹配,所以触发了ValueError。

而上面的方法通过将元组列表转换为DataFrame,让每个元组的两个元素分别对应col1和col2,完美匹配了你需要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:37:44