在pandas的groupby的apply方法中能否获取分组列的取值?
pandas groupby操作中apply方法获取分组列取值的方法
完全可以实现,你可以通过分组对象的name属性直接拿到当前分组对应的分组列取值。
示例实现
首先导入依赖并构造测试数据:
import pandas as pd import numpy as np df = pd.DataFrame([('bird', 389.0), ('bird', 24.0), ('mammal', 80.5), ('mammal', np.nan)], index=['falcon', 'parrot', 'lion', 'monkey'], columns=('class', 'max_speed'))
按class列分组后,apply方法传入的每个参数x是单个分组的DataFrame,x.name就是当前分组对应的class列取值,示例用法如下:
# 示例:统计每个分组的平均速度,同时保留分组名 result = df.groupby('class').apply(lambda x: pd.Series({ 'group_class': x.name, 'avg_max_speed': x['max_speed'].mean() })).reset_index(drop=True)
多分组列场景说明
如果你是按多列进行分组,x.name会返回一个按分组顺序排列的元组,存储所有分组列的当前取值,按索引即可取出对应列的分组值。
内容的提问来源于stack exchange,提问作者RazDva
相关产品推荐
相关产品推荐

