pandas
python
分组
看过来
《pandas 教程》 持续更新中,可作为 pandas 入门进阶课程、pandas 中文手册、用法大全,配有案例讲解和速查手册。提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。查看更新日志。作者开办 Python 数据分析训练营正在报名中,详情 Python 数据分析训练营。
![]() |
本教程作者所著新书《Python之光:Python编程入门与实战》(ISBN:9787111729891)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
![]() |
本教程作者所著新书《深入浅出Pandas:利用Python进行数据处理与分析》(ISBN:9787111685456)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 |
我们有一个数据,分别是ID、姓名、和年龄,用一个 ID 是同一个人,如果有两个 ID,一个是名一个是姓:
import pandas as pd
import io
data = '''
ID NAME AGE
110 Bob 32
111 Tom 53
111 Roberts 53
112 Tim 28
112 Cook 28
'''
df = pd.read_csv(io.StringIO(data), delim_whitespace=True)
df
'''
ID NAME AGE
0 110 Bob 32
1 111 Tom 53
2 111 Roberts 53
3 112 Tim 28
4 112 Cook 28
'''
希望按 ID 将名和姓合并,年龄取第一个年龄(一般相同)。
使用 groupby() 按 ID 分组,然后用 agg() 聚合数据。
最终代码为:
(
df.groupby('ID', sort=False, as_index=False)
.agg({'NAME': ' '.join, 'AGE': 'first'})
)
'''
ID NAME AGE
0 110 Bob 32
1 111 Tom Roberts 53
2 112 Tim Cook 28
'''
这样就完成了需求。
(完)