groupby.agg去重后的展平列表通用方法flatten_unique


通用方法写法

python 复制代码
import pandas as pd
from collections.abc import Iterable

def flatten_unique(series):
    """
    将Series中的元素(可能是列表或单值)展平、去重,返回列表。
    
    参数:
        series: pandas.Series
    返回:
        list 去重后的展平列表
    """
    # 展平
    flat_list = []
    for v in series:
        if isinstance(v, Iterable) and not isinstance(v, (str, bytes)):
            flat_list.extend(v)   # 如果是列表或其他可迭代
        else:
            flat_list.append(v)   # 如果是单个值
    # 去重并去掉 None
    return list(pd.unique([i for i in flat_list if pd.notna(i)]))

使用示例

ini 复制代码
df_result = (
    df_kong_sorted.groupby(["modelCode", "originalModel"], as_index=False)
    .agg(
        first_year=("year", "first"),
        first_week=("week", "first"),
        last_year=("year", "last"),
        last_week=("week", "last"),
        sum_amount=("total", "sum"),
        sum_volume=("count", "sum"),
        record_mark=("recordMark", flatten_unique)
    )
)

如果你需要返回字符串而不是列表

可以再写一个包装函数:

python 复制代码
def flatten_unique_str(series, sep=","):
    return sep.join(map(str, flatten_unique(series)))

这样可以直接:

ini 复制代码
record_mark=("recordMark", lambda x: flatten_unique_str(x, sep=";"))

这个方法的好处:

  • 通用:任何 DataFrame 分组聚合都能用
  • 类型兼容recordMark 里既有 list 又有单个字符串都能处理
  • 自动去重:避免重复值
  • 可扩展 :需要拼接成字符串时直接调用 flatten_unique_str

相关推荐
心易行者4 分钟前
Python在线运行+SQLite数据库实战:0成本搭个人数据后台,5个场景直接套用
前端·网络·人工智能·python
数据杂坛39 分钟前
【Python程序开发系列】实例方法、类方法(@classmethod)、静态方法(@staticmethod)有什么区别
python·课程设计·python语法
正经教主1 小时前
【FDE系列】阶段2:Day 31:SQL 基础 — 增删改查一把梭
人工智能·python·fde
leihefeng1 小时前
PX04-用 Python 读 Excel 画折线图,还能直接插回 Excel 文件
python·excel
Mr.朱鹏1 小时前
Docker三剑客实战指南:Docker、Dockerfile 和 Docker Compose
python·docker·devops·dockerfile
0566461 小时前
用大模型构建答疑机器人:从 API 调用到上下文工程
python·学习·agent
haluhalu.1 小时前
初识 Protobuf:微服务跨语言通信的一份契约
java·c语言·开发语言·c++·python
Liaiyang661 小时前
# 自研 AST 容错初筛工具:横向评测 Django、PyTorch、TensorFlow 三大开源 Python 框架异常收容风险
python·测试工具·自动化·开源软件·代码规范·devops·代码复审
空奈qwq1 小时前
机器学习入门:从核心概念到建模全流程
人工智能·python·机器学习
IvanCodes1 小时前
Python 基础语法(六):字典与集合
python