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

如何在Python的DataFrame中筛选mansion组并获取其最高房价?

解决Pandas筛选特定分组并查找最高价格的问题

原代码问题分析

你写的if df.loc[df['h_type']=='mansion']无法运行,因为布尔索引返回的是DataFrame对象,Python无法直接将其转换为布尔值用于条件判断,会触发ValueError。此外代码中priceSr未定义,逻辑上也没有先隔离出'mansion'分组的数据,容易误包含其他类型(比如'apartment')的记录。

正确实现步骤

  1. 先筛选出h_type为'mansion'的子数据集,完全隔离其他类型数据
  2. 判断该子数据集是否非空(避免无匹配数据的情况)
  3. 在子数据集中查找h_price最高的记录

完整代码示例

首先定义正确的示例DataFrame:

import pandas as pd

# 示例数据,注意字符串要加引号
df = pd.DataFrame({
    'h_type': ['apartment', 'mansion', 'apartment', 'mansion', 'mansion'],
    'h_price': [500000, 1200000, 600000, 1500000, 1300000]
})

方法一:用nlargest直接获取最高价格行(推荐)

nlargest可以直接返回指定列排序后的前N行,代码更简洁,还能处理多个相同最高价格的情况:

amost = None

# 筛选mansion分组数据
mansion_group = df[df['h_type'] == 'mansion']

if not mansion_group.empty:
    # 获取h_price最高的一行
    amost = mansion_group.nlargest(1, 'h_price')
else:
    print("未找到mansion类型的数据")

if amost is not None:
    print(amost, '\n==========')

方法二:用idxmax获取索引再取行

如果要沿用你原代码的思路,修正后的代码如下:

import numpy as np

amost = None
mansion_group = df[df['h_type'] == 'mansion']

if not mansion_group.empty:
    # 获取mansion分组中h_price最高的索引
    max_price_idx = mansion_group['h_price'].idxmax()
    # 取出对应行并转置为DataFrame格式
    amost = mansion_group.loc[max_price_idx].to_frame().transpose()

if amost is not None:
    print(amost, '\n==========')

运行结果

上述代码会输出mansion分组中价格最高的记录,比如示例数据中会返回:

h_type  h_price
3  mansion  1500000 
==========

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:35:26