You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pandas.DataFrame.groupby.transform仅按物种取蓝色观测的最大瓣宽?

解决方案

针对需求:为每个物种仅基于蓝色观测值计算petal_width的最大值,并将该值分配给该物种的所有观测(包括红色),以下是两种简洁实现方式:

方法一:先计算蓝色最大值再合并

# 筛选蓝色观测,按物种分组计算petal_width最大值
blue_species_max = iris[iris['color'] == 'blue'].groupby('species')['petal_width'].max().reset_index(name='max_width')
# 将最大值合并回原数据集,每个物种的所有行都匹配对应最大值
iris = iris.merge(blue_species_max, on='species', how='left')

方法二:使用transform结合条件筛选

# 按物种分组,在组内仅筛选蓝色观测的petal_width取最大值,广播到组内所有行
iris['max_width'] = iris.groupby('species')['petal_width'].transform(
    lambda group: group[iris.loc[group.index, 'color'] == 'blue'].max()
)

说明

  • 两种方法都能实现:同一物种的所有行(无论红色还是蓝色)都会被赋予该物种蓝色观测的petal_width最大值。
  • 方法一逻辑直观,适合数据量较大的场景;方法二代码更紧凑,一行完成赋值操作。

内容的提问来源于stack exchange,提问作者semblable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:30:47