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

如何在Pandas中为DataFrame列应用单输入函数并返回多个输出?

解决方案:用单个函数生成多列结果

当然有办法实现!完全不需要分别为A和B定义两个函数,而且实现起来很简洁。不过先帮你修正一下原函数里的语法问题——Python里不能用return A=3, B=5这种赋值式返回,得改成返回元组或者pandas Series才行,我先把函数修正好,再给你演示两种实用的方法:

方法1:返回元组后拆分到新列

先把函数改成返回元组的形式:

def func(var1):
    if var1 < 5:
        return 3, 5  # 返回元组,对应A和B的值
    elif var1 < 10:
        return 3, 10
    else:
        return 7, 10

然后给DataFrame的目标列应用这个函数,再把返回的元组拆分成两列:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'col': [2, 7, 12, 4, 9]})

# 应用函数并拆分结果到A、B列
df[['A', 'B']] = df['col'].apply(func).tolist()

这样执行后,df就会新增A和B两列,对应每个col值的计算结果。

方法2:返回pandas Series直接生成多列

这种方法更直观,函数直接返回一个Series,并且可以指定列名:

def func(var1):
    if var1 < 5:
        return pd.Series([3, 5], index=['A', 'B'])
    elif var1 < 10:
        return pd.Series([3, 10], index=['A', 'B'])
    else:
        return pd.Series([7, 10], index=['A', 'B'])

然后直接应用函数到列上,结果会自动匹配列名生成新列:

df[['A', 'B']] = df['col'].apply(func)

这种方法的好处是不需要额外转成列表,而且返回的Series自带列名,代码可读性更强。

这两种方法都能让你用单个函数生成两个输出列,完全不用写重复的函数~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:02:39