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

如何正确使用DataFrame的iterrows()方法查找别墅最高价?

问题解决建议

1. 解决iterrows()调用未筛选别墅的问题

你当前的price()函数没有利用iterrows()循环中的单条行数据,大概率是直接读取了整个原始DataFrame的房价,导致结果没有过滤出别墅房型。

两种修正思路:

  • 思路1:循环收集房价后求最大值
    直接在循环中提取每行的别墅房价,实时更新最大值:
    max_price = 0
    for _, row in mansion.iterrows():
        current_price = row["h_price"]
        if current_price > max_price:
            max_price = current_price
    print(max_price)
    
  • 思路2:修改price()函数接收参数
    让函数接收单条房价数值,循环时传入当前行的房价:
    def price(current_price):
        global max_price
        if current_price > max_price:
            max_price = current_price
    
    max_price = 0
    for _, row in mansion.iterrows():
        price(row["h_price"])
    print(max_price)
    

2. 解决apply()调用的参数报错问题

报错TypeError: price() takes 0 positional arguments but 1 was given的原因是:apply(axis=1)会自动把每一行数据作为参数传给price(),但你的函数没有定义接收参数的位置。

修正方法:

  • 给price()添加参数接收行数据,提取房价后再求最大值:
    def price(row):
        return row["h_price"]
    
    # 提取所有别墅房价后求最大值
    mansion_prices = mansion.apply(price, axis=1)
    max_price = mansion_prices.max()
    print(max_price)
    
  • 更简洁的写法(无需单独定义price()):
    max_price = mansion.apply(lambda row: row["h_price"], axis=1).max()
    

补充说明:iterrows()和apply()的性能都远不如常规的df[df["h_type"] == "mansion"]["h_price"].max(),如果不是练习需求,优先使用常规方法。

内容的提问来源于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 10:35:24