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

Pandas分组(Groupby)后如何添加唯一地址列及最大Site#列?

解决方法

你可以通过两种方式实现分组内唯一地址的列添加:

方法1:使用transform结合lambda函数

直接对分组后的Address列使用transform,先提取唯一值再用逗号拼接成字符串:

import pandas as pd

# 构造测试DataFrame
data = {
    'District#': [1, 1, 2, 2],
    'Site#': [1, 2, 36, 44],
    'Address': ['123 Bayview Ln', '456 Example St', '789 Hello Dr', '789 Hello Dr']
}
df = pd.DataFrame(data)

# 添加MaxSite#列(你已实现的代码)
df['MaxSite#'] = df.groupby('District#')['Site#'].transform('max')

# 添加分组内唯一地址列
df['All District Addresses'] = df.groupby('District#')['Address'].transform(lambda x: ','.join(x.unique()))

之前用transform('unique')返回的是数组类型,无法直接作为列值展示,用join转换成字符串后就能正常填充到每一行,避免维度不匹配问题。

方法2:先聚合再合并

先分组聚合得到每个District对应的唯一地址字符串,再通过merge合并回原DataFrame:

# 构造测试DataFrame(同上)
data = {
    'District#': [1, 1, 2, 2],
    'Site#': [1, 2, 36, 44],
    'Address': ['123 Bayview Ln', '456 Example St', '789 Hello Dr', '789 Hello Dr']
}
df = pd.DataFrame(data)

# 添加MaxSite#列
df['MaxSite#'] = df.groupby('District#')['Site#'].transform('max')

# 聚合得到每个District的唯一地址字符串
district_addrs = df.groupby('District#')['Address'].unique().apply(lambda x: ','.join(x)).reset_index(name='All District Addresses')

# 合并回原DataFrame
df = df.merge(district_addrs, on='District#')

两种方法都能得到你期望的输出结果,可根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:32:43