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

如何使用df.apply()返回多个值?

解决方案:用可变对象承载独立message

可以实现你的需求,核心思路是用**可变对象(比如列表)**来存储全局的message,让自定义函数只返回每行的计算结果给DataFrame的新列,同时在函数内部将message存入可变对象中,后续直接从该对象取出即可。

具体实现步骤

  1. 定义一个空的可变容器(比如列表),用于存储message(列表是可变类型,函数内部修改会同步到外部)。
  2. 改写自定义函数:仅返回每行的计算结果,同时在函数内部将message存入容器(可加判断避免重复写入)。
  3. 调用apply生成Result列,之后从容器中取出独立的message。

代码示例

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'Column1': [1, 2, 3], 'Column2': [4, 5, 6]})

# 定义存储message的容器
msg_container = []

def custom_function(row):
    # 每行的计算逻辑
    result = row['Column1'] + row['Column2']
    # 仅在第一次调用时生成并存储message(避免重复写入)
    if not msg_container:
        # 这里可以根据实际需求生成message,比如统计处理行数
        message = f"计算完成,共处理{len(df)}行数据"
        msg_container.append(message)
    return result

# 生成Result列
df['Result'] = df.apply(custom_function, axis=1)
# 获取独立的message变量
message = msg_container[0]

# 验证结果
print(df)
print(message)

为什么之前的方法无效?

  • 第一种写法[df['Result'] = df.apply(...), message] = df.apply(...)是Python语法错误,apply返回的是Series对象,无法直接拆分为列赋值和变量。
  • 第二种返回元组的方式,apply会将每行返回的元组拆分为多列,导致message被添加为每行的列值,而非独立变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:43:15