看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 pandas 中,有一个 DataFrame,按列分组,并希望将一列的最后一个值分配给另一列的所有行。我们来看看这个数据:
import pandas as pd
import io
data = '''
a b
1 20
1 21
2 30
3 40
3 41
'''
df = pd.read_csv(io.StringIO(data), sep=r'\s+')
df
'''
a b
0 1 20
1 1 21
2 2 30
3 3 40
4 3 41
'''
增加一列 c,这列是以 a 分组,所有值是对应 b 列的最后一个值。
用 groupby 分组,分组后用 transform 进行窗口计算,传入 last 方法,取得各组的最后一个值。
最终的代码是:
df.assign(c=df.groupby('a').b.transform('last'))
'''
a b c
0 1 20 21
1 1 21 21
2 2 30 30
3 3 40 41
4 3 41 41
'''
这样就完成了需求。
(完)
更新时间:Aug. 18, 2024, 4:18 p.m. 标签:pandas python 分组