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

Python Pandas如何按id聚合DataFrame行并按条件生成布尔列

Pandas 分组按条件生成宽表实现

实现思路

  • 先定义每个K值对应的判断规则
  • 逐行标记当前记录是否满足对应K的判断条件
  • 按id、K字段分组,只要同组内存在任意一条记录满足条件,即判定该id对应该条件的结果为True(如果需要组内所有记录都满足才判定为True,把聚合函数从any()换成all()即可)
  • 分组后将K维度的结果转置为列,重命名字段和预期输出对齐

完整代码

import pandas as pd

# 1. 构造原始数据集
df = pd.DataFrame({
    'id': [1, 1, 1, 1, 2, 2, 2],
    'K': ['k1', 'k2', 'k2', 'k1', 'k1', 'k1', 'k2'],
    'V': [3, 4, 5, 5, 2, 3, 3]
})

# 2. 配置每个K对应的判断条件,可按需扩展
condition_config = {
    'k1': lambda v: v > 1,
    'k2': lambda v: v < 4
}

# 3. 逐行计算当前记录是否匹配对应K的条件
df['is_match'] = df.apply(lambda row: condition_config[row['K']](row['V']), axis=1)

# 4. 分组聚合后转宽表
result = df.groupby(['id', 'K'])['is_match'].any().unstack().reset_index()

# 5. 重命名列,匹配预期输出格式
result.columns = ['id', 'k1_condition', 'k2_condition']

print(result)

输出结果

运行代码后得到的输出和预期完全一致:

id  k1_condition  k2_condition
0   1          True         False
1   2          True          True

内容的提问来源于stack exchange,提问作者l a s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:09:15