导读:本期聚焦于小伙伴创作的《Pandas多列聚合时如何使用groupby和agg实现自定义字符串拼接》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Pandas多列聚合时如何使用groupby和agg实现自定义字符串拼接》有用,将其分享出去将是对创作者最好的鼓励。

在Pandas数据处理场景中,经常需要根据某一列或多列对数据进行分组,同时对多个列进行聚合操作,其中自定义字符串拼接是高频需求。通过groupby结合agg方法,可以灵活实现不同规则的字符串拼接逻辑,适配各类数据处理场景。

Pandas多列聚合时如何使用groupby和agg实现自定义字符串拼接

基础分组聚合与agg方法说明

Pandas的groupby方法用于按照指定维度对数据进行分组,agg方法则可以对分组后的不同列应用不同的聚合函数。要实现自定义字符串拼接,核心是在agg中传入自定义的拼接函数,函数内部根据需求处理多个列的字符串组合逻辑。

首先创建一个示例数据集,方便后续演示操作:

import pandas as pd

# 创建示例数据
data = {
    "category": ["A", "A", "B", "B", "B"],
    "name": ["苹果", "香蕉", "橙子", "梨", "葡萄"],
    "price": [5, 3, 4, 6, 7]
}
df = pd.DataFrame(data)
print(df)

单分组维度下多列自定义拼接

假设我们需要按照category分组,将每个分组下的name列和price列拼接成自定义格式的字符串,比如用竖线分隔,格式为「名称:价格」。

首先定义自定义拼接函数,函数接收分组后的子DataFrame,遍历每一行组合两个列的内容:

def custom_concat(group):
    # 遍历分组内的每一行,拼接name和price
    result_list = []
    for _, row in group.iterrows():
        concat_str = f"{row['name']}:{row['price']}"
        result_list.append(concat_str)
    # 用竖线连接所有拼接后的字符串
    return "|".join(result_list)

# 使用groupby和agg应用自定义函数
result = df.groupby("category").agg(
    concat_result=custom_concat
)
print(result)

上述代码会输出每个category分组下,所有name和price组合后的拼接字符串,分隔符为竖线,单个元素格式为名称加价格。

多分组维度下的多列拼接

如果有多个分组维度,比如同时按照category和另一个列分组,操作流程基本一致,只需要在groupby中传入多个分组列名即可:

# 新增一个分组列
df["region"] = ["华东", "华东", "华南", "华南", "华南"]
# 多维度分组聚合
multi_group_result = df.groupby(["category", "region"]).agg(
    concat_result=custom_concat
)
print(multi_group_result)

不同列使用不同拼接规则

如果需要对不同的列使用不同的拼接规则,可以在agg中为每个列单独指定对应的处理函数,示例如下:

def concat_name(group):
    return ",".join(group["name"].tolist())

def concat_price(group):
    return "-".join(map(str, group["price"].tolist()))

# 不同列应用不同的拼接函数
diff_rule_result = df.groupby("category").agg(
    name_concat=concat_name,
    price_concat=concat_price
)
print(diff_rule_result)

注意事项

  • 自定义拼接函数接收的参数是分组后的子DataFrame,因此可以直接操作多个列的数据
  • 如果拼接的内容不是字符串类型,需要先转换为字符串再进行拼接,避免出现类型错误
  • agg中传入自定义函数时,函数名不需要加括号,直接传入函数引用即可
  • 拼接分隔符可以根据需求调整,比如逗号、空格、特殊符号等,只需要修改join方法的参数
如果需要处理大量数据,自定义函数的方式可能效率不如内置向量化方法,此时可以考虑先对列进行向量化处理再拼接,提升运行速度。

Pandasgroupbyagg字符串拼接多列聚合修改时间:2026-06-10 03:24:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。