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

如何在for循环中筛选多个DataFrame中含指定值的行?

问题分析与解决

你的代码无法生效主要有两个核心问题:

  1. 临时变量赋值未修改原列表:循环中d = d.loc[...]只是把临时变量d指向了新的筛选结果,原列表MasterFiles里的DataFrame并没有被更新。
  2. 列名变量拼写错误:ColumName应该修正为ColumnName(少了一个n),否则会引发列名查找错误。

解决方案

方法1:生成新的筛选后DataFrame列表(推荐)

这种方式不会修改原数据,更安全清晰:

# 修正列名拼写
ColumnName = 'product_category'
# 用列表推导式快速筛选,因为只有一列,无需嵌套循环
filtered_master_files = [df.loc[df[ColumnName] == 'XXX'] for df in MasterFiles]

方法2:直接修改原列表的元素

如果需要更新原MasterFiles列表,可以通过索引遍历修改:

ColumnName = 'product_category'
for idx in range(len(MasterFiles)):
    # 获取当前索引对应的DataFrame
    current_df = MasterFiles[idx]
    # 筛选后重新赋值给原列表的对应位置
    MasterFiles[idx] = current_df.loc[current_df[ColumnName] == 'XXX']

补充说明

  • 你的代码里ColumnName是只有一个元素的列表,没必要嵌套两层循环,直接用单个列名字符串更高效。
  • 如果需求是筛选包含XXX而非等于XXX,可以用df[ColumnName].str.contains('XXX', na=False)(na=False用来排除空值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:09:22