我有一个包含工作地点信息的数据框。
District# Site# Address
1 1 123 Bayview Ln
1 2 456 Example St
2 36 789 Hello Dr
2 44 789 Hello Dr
我正在尝试转换此数据框,以添加具有最高 Site# 的列以及按 District# 分组时的不同地址。以下是我希望输出的示例:
District# Site# Address MaxSite# All District Addresses
1 1 123 Bayview Ln 2 123 Bayview Ln,456 Example St
1 2 456 Example St 2 123 Bayview Ln,456 Example St
2 36 789 Hello Dr 44 789 Hello Dr
2 44 789 Hello Dr 44 789 Hello Dr
我可以通过以下方式获取 Max Site#
df['MaxSite#'] = df.groupby(by='District#')['Site#'].transform('max')
但是当我按 District# 分组时,我尝试找到一种类似的方法来列出所有唯一的地址。
我尝试过.transform('unique')
但是这不是一个有效的函数名并且执行.agg(['unique'])
返回的维度不匹配
您可以使用
groupby
和agg
获取最大站点数量并列出所有地址然后
merge
返回原始数据框:输出:
获取唯一地址有两个步骤。
District#
,并将它们合并成一个字符串All District Addresses
通过映射District#
到unique_addresses
DataFrame 来创建 Series。输出:
如果您愿意,可以使用一行代码:
使用
transform
: