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

Pandas DataFrame特殊分组:按number列分组后布尔列执行OR聚合

实现代码

你可以直接按分组指定不同聚合规则实现需求,示例代码如下:

import pandas as pd
import numpy as np

# 1. 预处理:将数据中的空白字符串转为NaN,避免聚合时取到空值
df = df.replace(r'^\s*$', np.nan, regex=True)

# 2. 定义各列聚合规则
agg_func = {
    # 同number下取值一致,取第一个非空值即可
    "Num_1": "first",
    "Num_2": "first",
    "Num_3": "first",
    # 布尔列执行OR运算,用any()实现:分组内只要有一个1就返回1
    "col_1": "any",
    "col_2": "any",
    "col_3": "any",
    # 取分组内唯一的非空时间值
    "col_4": "first"
}

# 3. 按number字段分组聚合
res_df = df.groupby("number", as_index=False).agg(agg_func)

# (可选)如果需要匹配示例输出中False显示为空白的格式,增加如下转换
res_df[["col_1", "col_2", "col_3"]] = res_df[["col_1", "col_2", "col_3"]].replace({True: 1, False: ""})

规则说明

  • 相同number对应的Num_1/Num_2/Num_3取值固定,直接取分组内第一个值即可保证正确性
  • 布尔OR运算在Pandas中可以直接用any()聚合函数实现,只要分组内存在任意一个1就返回True,全为0才返回False
  • 同分组下col_4只有一行有有效值,用first()可以直接取到对应时间值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:18:01