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

Python如何将处理DataFrame的多行代码封装为函数,参数及返回值如何设置

代码封装及函数相关问题解答

1. 代码封装到函数的实现示例

直接参考下方封装好的代码,同时对原有代码做了精简优化,也替换了pandas高版本已经弃用的append方法,兼容性更好:

import pandas as pd
import numpy as np

# 此处保留你原有定义的processDate日期处理函数
# def processDate(x):
#     你原有的日期处理逻辑
#     pass

def merge_and_process_df(main_df, esg_df, date_processor=processDate):
    # 合并两个DataFrame
    df = pd.concat([main_df, esg_df], ignore_index=True)
    # 处理SourceUrl前缀
    df['SourceUrl'] = df['SourceUrl'].apply(lambda x: x.lstrip('htps://') if pd.notnull(x) else np.nan)
    # 批量处理所有日期字段,替代重复代码
    date_cols = ['AvailableAt', 'PublishedAt', 'LastModified']
    for col in date_cols:
        df[col] = df[col].apply(date_processor)
    # 生成复合标识字段
    df["sig_compid_pubdt"] = df["CompanyId"] + "_" + df["PublishedAt"]
    # 返回处理完成的结果
    return df

2. 入参确定规则和所需参数

入参只需要筛选代码里所有来自函数外部的变量即可,不需要把函数内部生成的临时变量作为入参:

  • 必传固定参数:待处理的主DataFrame(也就是你原有代码里的df)、待合并的esg DataFrame(也就是你原有代码里的esg)
  • 可选动态参数:日期处理函数date_processor,如果你后续可能更换不同的日期处理逻辑,可以作为入参传入,默认用你现有processDate即可,不需要调整的话可以删掉这个参数。
    已经在全局导入的pandas、numpy库不需要作为入参传入。

3. 返回值规则和return使用说明

  • 该场景下函数直接返回处理完成的合并后DataFrame即可,调用时用processed_df = merge_and_process_df(你的主df, 你的esg df)就能拿到处理后的结果。
  • return关键字直接在后面跟上你要抛给函数外部使用的变量即可,单个函数支持返回多个值,用逗号分隔即可。
  • 必须使用return的场景:只要你需要把函数内部计算、处理得到的结果拿到函数外部使用,就必须加return。如果函数只执行不需要对外输出的操作(比如直接把处理结果存为本地csv、仅打印统计值),不需要把结果拿到外部使用的话,可以不用return。你当前场景需要拿到处理后的DataFrame做后续操作,所以必须加return。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:45:03