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

如何按Model分组用最低Price行填充Pandas DataFrame空值?

解决方案

可以通过分组后提取每组Price最小的行,再用该行值填充组内空值来实现需求,具体步骤如下:

  1. 先将Price列转换为数值类型(避免因原数据类型导致min计算错误):
import pandas as pd
import numpy as np

data = [[1000, 'x', 'A'], [2000,'y', 'A'], ['NaN','NaN', 'A'], ['NaN','NaN','B'], [1700,'z', 'B']]
df = pd.DataFrame(data, columns=['Price', 'Attribute', 'Model' ])
df = df.replace('NaN',np.nan)

# 转换Price为数值型
df['Price'] = pd.to_numeric(df['Price'])
  1. 按Model分组,对每组使用Price最小的行填充空值:
# 定义填充逻辑:每组取Price最小的行,用该行值填充组内空值
filled_df = df.groupby('Model', group_keys=False).apply(
    lambda g: g.fillna(g.loc[g['Price'].idxmin()])
)

运行后filled_df的输出与期望一致:

Price Attribute Model
0  1000.0         x     A
1  2000.0         y     A
2  1000.0         x     A
3  1700.0         z     B
4  1700.0         z     B

逻辑说明

  • groupby('Model', group_keys=False):按Model分组,避免分组后额外保留组键索引
  • g.loc[g['Price'].idxmin()]:定位当前组中Price最小的行(若存在多个Price相同的最小值,取第一个出现的行)
  • g.fillna(...):用该行的所有非空值,批量填充组内对应列的空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:31:12