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

遍历多个DataFrame并应用自定义函数后未生效的问题求助

问题原因及解决方法

问题根源

你循环里的df = VDS_pre(df)只是把处理后的DataFrame赋值给了循环临时变量,并没有更新列表里的元素,更不会修改最初的vds、vds2等变量:

  • pandas的groupby、rename、列筛选操作都会返回新的DataFrame对象,而非原地修改原对象;
  • 循环中的df是列表元素的临时引用,重新赋值后只会让这个临时变量指向新对象,原列表和初始变量不会受到影响。

解决方法

方法1:用列表推导式生成处理后的新列表

这种写法简洁高效,直接得到所有处理后的DataFrame:

# 生成处理后的DataFrame列表
dfs_processed = [VDS_pre(df) for df in dfs]

# 可选:如果需要更新原变量vds、vds2等
vds, vds2, vds3, vds4 = dfs_processed

方法2:通过索引循环更新原列表

如果要直接修改原列表的元素,可以用索引遍历:

for i in range(len(dfs)):
    dfs[i] = VDS_pre(dfs[i])

# 此时dfs里的每个元素都是处理后的结果
# 同样可选:更新原变量
vds, vds2, vds3, vds4 = dfs

验证处理结果

可以打印处理后的DataFrame确认:

for idx, df in enumerate(dfs_processed):
    print(f"处理后的第{idx+1}个DataFrame:")
    print(df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:57:51