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

Python中为DataFrame列表批量应用函数的问题

问题解决方法

核心问题

你的循环仅调用rateCalc但未将处理后的DataFrame存回列表,且pandas.DataFrame.assign()返回的是新对象,不会修改原DataFrame。另外要确保dfList是列表(用[]定义)而非元组(仅逗号分隔),元组无法修改元素。

修正后的循环代码

方法1:索引循环赋值

# 先确保dfList是列表格式
dfList = [df0, df1, df2, df3, df4, df5, df6, df7]

for i in range(len(dfList)):
    dfList[i] = rateCalc(dfList[i])

方法2:列表推导式(更简洁)

dfList = [rateCalc(df) for df in dfList]

可选:优化rateCalc函数(矢量化操作,提升效率)

原函数逐行循环处理效率较低,若你使用的是statsmodels.stats.proportion.proportion_confint,它支持批量输入,可改成矢量化操作:

def rateCalc(outcomeDataFrame):
    # 直接计算midrate列
    outcomeDataFrame['midrate'] = outcomeDataFrame.iloc[:,4] / outcomeDataFrame.iloc[:,3]
    # 批量计算所有行的置信区间
    lowerRate, upperRate = proportion_confint(
        count=outcomeDataFrame.iloc[:,4],
        nobs=outcomeDataFrame.iloc[:,3]
    )
    # 添加置信区间列
    outcomeDataFrame['lowerRate'] = lowerRate
    outcomeDataFrame['upperRate'] = upperRate
    return outcomeDataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:55:20