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

从单个DataFrame生成多组条件筛选的相似DataFrame

问题

现有如下结构的DataFrame:

import pandas as pd

data = {
    'name': ['a', 'b', 'c', 'b', 'c'],
    'x': ['test', 'set', 'set', 'fix', 'set'],
    'y': [True, False, True, True, False],
    'z': [0, 0, 1, 1, 0]
}
df = pd.DataFrame(data)

需要为指定的6-7个名称,分别生成三组筛选后的DataFrame:

  • 第一组:name为指定值且x='set'
  • 第二组:name为指定值且y=True
  • 第三组:name为指定值且z=1

希望避免重复复制子集化代码,实现高效批量处理。

高效批量处理方案

可以通过定义筛选条件模板+循环遍历目标名称的方式实现,用嵌套字典存储结果,方便后续调用:

步骤1:定义目标名称和筛选条件

# 要处理的目标名称列表,替换成你的6-7个名称
target_names = ['b', 'c', 'a']

# 定义筛选条件:键是组名,值是筛选逻辑
filter_conditions = {
    'group_x_set': lambda df, name: (df['name'] == name) & (df['x'] == 'set'),
    'group_y_true': lambda df, name: (df['name'] == name) & (df['y'] == True),
    'group_z_1': lambda df, name: (df['name'] == name) & (df['z'] == 1)
}

步骤2:批量生成并存储结果

# 用嵌套字典存储每个名称对应的三组DataFrame
result_dict = {}

for name in target_names:
    name_groups = {}
    for group_name, condition in filter_conditions.items():
        # 应用筛选条件并复制,避免视图修改问题
        filtered_df = df[condition(df, name)].copy()
        name_groups[group_name] = filtered_df
    result_dict[name] = name_groups

步骤3:调用结果

比如要获取名称'c'的第二组数据:

result_dict['c']['group_y_true']

输出结果:

name    x     y  z
2    c  set  True  1

方案优势

  • 只需修改target_names和filter_conditions即可扩展或调整需求
  • 避免重复编写筛选代码,减少冗余
  • 结果结构化存储,便于后续批量分析或导出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:35:50