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

如何在Pandas的apply函数中传递两个DataFrame参数?

解决pandas apply传递多个DataFrame参数的问题

你遇到的核心问题是function_check_age_19需要两个参数,但调用apply时只传了行对象,参数缺失导致函数返回None。下面是两种可行的解决方式:

方法1:用lambda闭包传递额外参数

先调整function_check_age_19的定义,让它接收行对象和人口比例表两个参数:

def function_check_age_19(row, df_census):
    # 这里编写你的处理逻辑,比如根据行数据匹配df_census的比例计算人口
    # 示例:假设row包含year字段,匹配df_census对应年份的年龄组比例
    target_ratio = df_census[df_census['year'] == row['year']]['age_group_ratio'].values[0]
    calculated_pop = row['total_pop'] * target_ratio
    return calculated_pop

然后在split_population_18_19里调用apply时,通过lambda把df_census_final传入:

def split_population_18_19(df):
    result = df.apply(lambda row: function_check_age_19(row, df_census_final), axis=1)
    # 可将结果添加为df的新列
    df['calculated_pop'] = result
    return df

方法2:用apply的args参数(更规范)

确保function_check_age_19的参数顺序正确(行对象在前,额外DataFrame在后),然后直接用apply的args参数传递:

def split_population_18_19(df):
    # args接收元组形式的额外参数,注意末尾逗号不能省略
    result = df.apply(function_check_age_19, axis=1, args=(df_census_final,))
    df['calculated_pop'] = result
    return df

关键注意点

  • 必须保证function_check_age_19有明确的return语句,否则即使参数传对,也会返回None。
  • 不推荐直接在function_check_age_19里使用全局变量df_census_final,显式传参的写法更利于代码复用和维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:20:27