如何用单参数双返回值函数一次性更新Pandas DataFrame多列?
Pandas通过单参数多返回值函数更新多列的解决方案
完整可运行代码
import pandas as pd # 创建示例DataFrame df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [10, 20, 30], 'C': [100, 200, 300] }) # 定义要应用的函数 def my_function(x): return x*2, x*3 # 函数返回包含两个值的元组 # 核心更新操作 df[['A', 'B']] = df['C'].apply(my_function).apply(pd.Series) # 输出验证结果 print(df)
两种常用实现方式
基础实现:用
apply(pd.Series)拆分元组
对C列应用函数后,会得到一个元素为元组的Series,通过apply(pd.Series)可以将每个元组拆分为两列,直接赋值给A、B列即可完成更新。高效实现:转为列表构造DataFrame
如果处理大数据集,推荐使用tolist()将元组Series转换为列表,再构造DataFrame并指定索引,减少额外的函数调用开销:
df[['A', 'B']] = pd.DataFrame(df['C'].apply(my_function).tolist(), index=df.index)
运行结果
执行后DataFrame的A列会被替换为C列值的2倍,B列替换为C列值的3倍,最终输出:
A B C 0 200 300 100 1 400 600 200 2 600 900 300
内容的提问来源于stack exchange,提问作者Samuel O.D.
相关产品推荐
相关产品推荐

