看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)有以下一个 DataFrame,按照 [x2,test]
分组, v1 到 v3 取取均值,其余不参与分组的列取最后一个值。
import pandas as pd
import io
data = '''
x1 x2 test time v1 v2 v3
A 产品1 1 1月 1.0 1.0 1
A 产品2 2 2月 2.0 2.0 2
A 产品2 2 3月 NaN 3.0 3
A 产品2 2 4月 4.0 NaN 4
B 产品3 3 1月 NaN 5.0 5
B 产品4 4 2月 6.0 6.0 6
B 产品5 5 3月 7.0 NaN 10
B 产品5 5 4月 8.0 8.0 8
'''
df = pd.read_csv(io.StringIO(data), sep=r'\s+')
df
# ...
pandas 代码如下:
(
df.groupby(['x2', 'test'])
.agg({
**{i:'last' for i in ['x1', 'time']},
**{i:'mean' for i in ['v1', 'v2', 'v3']}
})
.reset_index()
.reindex(df.columns, axis=1)
)
'''
x1 x2 test time v1 v2 v3
0 A 产品1 1 1月 1.0 1.0 1.0
1 A 产品2 2 4月 3.0 2.5 3.0
2 B 产品3 3 1月 NaN 5.0 5.0
3 B 产品4 4 2月 6.0 6.0 6.0
4 B 产品5 5 4月 7.5 8.0 9.0
'''
查看相关链接中的知识。
(完)
更新时间:Aug. 18, 2024, 7:14 p.m. 标签:pandas python 分组 平均值