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

Pandas DataFrame:多输入列转多输出列的最优实现方法?

更简洁高效的实现方式

你可以直接利用Pandas的apply方法结合result_type='expand'参数,一步完成自定义函数的应用和结果的展开,完全省去中间转换Series的繁琐步骤:

优化后的代码

import pandas as pd

def fn(a):
    return (min(a), max(a), a[0], a[-1])

df = pd.DataFrame([(2, 4, 5, 1, 3), (12, 14, 15, 11, 13), (20, 40, 50, 10, 30)], index=['a', 'b', 'c'])

# 直接对每行应用函数并展开结果为DataFrame
result_df = df.apply(fn, axis=1, result_type='expand')
print(result_df)

输出结果和你原来的实现完全一致:

0   1   2   3
a   1   5   2   3
b  11  15  12  13
c  10  50  20  30

关键说明

  • axis=1指定对每行应用自定义函数(如果你的需求是处理每列,只需把axis=1改成axis=0)
  • result_type='expand'会自动将函数返回的元组/列表展开为DataFrame的列,无需手动转换values.tolist()
  • 这个写法直接从原DataFrame生成目标结果,代码更简洁,可读性更强

如果你的自定义函数无法进行向量化改造(必须逐行/列处理),这就是当前最简洁高效的实现方式;如果函数逻辑允许拆分,你也可以用Pandas内置的向量化方法组合实现(比如df.min(axis=1)、df.max(axis=1)等),性能会进一步提升,但这不符合你“必须使用自定义函数”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:02:06