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

如何在pandas DataFrame中按base_path关联高效新增备注列

实现方案

核心思路是按base_path分组后,拼接每组内去重的region字段值,再映射回原DataFrame,两种常用实现方式如下:


方法1:groupby + transform(代码最简洁)

适合中小数据量,一行代码即可完成:

import pandas as pd

# 构造示例DataFrame
data = {
    'region': ['us', 'emea', 'asia', 'emea', 'us', 'us', 'asia', 'asia'],
    'base_path': ['/image', '/video', '/docs', '/image', '/video', '/docs', '/location', '/image'],
    'count': [3,2,2,3,2,2,1,3]
}
df = pd.DataFrame(data)

# 核心逻辑
df['comment'] = df.groupby('base_path')['region'].transform(lambda x: '-'.join(x.unique()))

方法2:分组构造映射字典 + map(性能更优)

适合百万级以上的大数据量,比transform方式开销更低:

# 构造base_path到拼接后comment的映射字典
path_comment_map = df.groupby('base_path')['region'].unique().str.join('-').to_dict()
# 映射到原表新增字段
df['comment'] = df['base_path'].map(path_comment_map)

可选调整

如果需要region按固定顺序拼接(比如字母序),只需在拼接前对去重后的列表做排序即可:

# 按字母序排序后拼接
df['comment'] = df.groupby('base_path')['region'].transform(lambda x: '-'.join(sorted(x.unique())))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:24:01