看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
我们有一个数据,分别是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), sep=r'\s+')
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
'''
这样就完成了需求。
(完)
更新时间:2024-08-18 16:18:24 标签:pandas python 分组