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

如何用循环实现DataFrame多列过滤条件的全组合计算

解决方法

首先修正你原函数的语法错误(过滤条件的括号未闭合):

def df_filter(df, col_key1, col_key2, col_key3, a, b, c):
    df1 = df[(df[col_key1]==a) & (df[col_key2]==b) & (df[col_key3]==c)]  # 补全右括号
    df1 = df1.groupby(by=['ID'])['satisfaction'].mean()
    return df1

方法一:循环遍历所有参数组合

因为key1、key2、key3的参数都是0或1,所有可能的组合可以用itertools.product生成,再循环调用函数保存结果:

import itertools

# 生成所有0和1的三元组合
all_combinations = list(itertools.product([0,1], repeat=3))

# 用字典存储每个组合对应的结果
results = {}
for a, b, c in all_combinations:
    combo_key = (a, b, c)
    results[combo_key] = df_filter(df, 'key1', 'key2', 'key3', a, b, c)

# 示例:查看(1,0,0)组合的结果
print(results[(1,0,0)])

方法二:用Pandas GroupBy批量处理(更高效)

不需要循环调用函数,直接按key1、key2、key3和ID分组计算均值,一次性得到所有组合的结果,性能更优:

# 按key1、key2、key3、ID分组,计算satisfaction的均值
all_results = df.groupby(['key1', 'key2', 'key3', 'ID'])['satisfaction'].mean()

# 示例:查看key1=1, key2=0, key3=0的结果
print(all_results.loc[(1,0,0)])

这种方式避免了多次重复的过滤和分组操作,数据量越大,对比循环的效率优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:55:30