如何按Name列去重并合并对应Occupation列字符串?
解决方案
可以通过 Pandas 的 groupby 配合聚合函数实现需求,具体步骤如下:
1. 构造原始 DataFrame
先还原你提供的原始数据:
import pandas as pd df = pd.DataFrame({ 'Name': ['Jack', 'Alice', 'Jack', 'Cathy'], 'center': ['Miami', 'Tx', 'San Jose', 'Houston'], 'Occupation': ['Clerk', 'Manager', 'PO', 'Security'] })
2. 分组聚合处理
按 Name 列分组,对 center 保留每组第一个出现的值,对 Occupation 用空格拼接所有对应字符串:
result_df = df.groupby('Name', as_index=False).agg( center=('center', 'first'), Occupation=('Occupation', ' '.join) )
3. 最终结果
执行后得到的 result_df 与你期望的格式一致:
| Name | center | Occupation |
|---|---|---|
| Alice | Tx | Manager |
| Cathy | Houston | Security |
| Jack | Miami | Clerk PO |
代码说明
groupby('Name', as_index=False):按Name分组,同时保持原列结构,不将分组列设为索引agg():为不同列指定聚合规则,('center', 'first')取每组center列的首个值,('Occupation', ' '.join)用空格拼接每组所有Occupation字符串
内容的提问来源于stack exchange,提问作者user13663383
相关产品推荐
相关产品推荐

