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

如何用一段代码为多个DataFrame应用相同的列类别筛选?

批量筛选多个DataFrame的正确方法

你的尝试代码存在两个核心问题:一是引用了未定义的columns变量,二是没有保存筛选后的结果。以下是几种可行的实现方式:

方法1:循环收集筛选结果(直观易懂)

把每个DataFrame筛选后存入新列表,避免修改原数据:

# 原始DataFrame列表
filter_list = [df1, df2, df3, df4]
# 初始化空列表存储筛选后的结果
filtered_dfs = []

for df in filter_list:
    # 筛选category列值为'category1'的行
    filtered_df = df[df['category'] == 'category1']
    filtered_dfs.append(filtered_df)

# 访问筛选后的结果:filtered_dfs[0]对应原df1的筛选结果,以此类推

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

用一行代码完成筛选和结果收集,适合熟悉Python语法的场景:

filter_list = [df1, df2, df3, df4]
filtered_dfs = [df[df['category'] == 'category1'] for df in filter_list]

方法3:直接修改原列表(谨慎使用)

如果需要直接覆盖原列表中的DataFrame,可以通过索引循环实现:

filter_list = [df1, df2, df3, df4]

for i in range(len(filter_list)):
    filter_list[i] = filter_list[i][filter_list[i]['category'] == 'category1']

# 此时filter_list中的元素已替换为筛选后的DataFrame

原代码错误说明

  • name.columns[columns['category'] == 'category1']逻辑错误:你需要筛选的是行,不是列名;且columns变量未定义,正确写法是df['category']来指定目标列。
  • 循环中直接操作name不会保留结果:循环变量name是临时引用,生成的筛选结果需要主动收集或替换原列表元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:55:19