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

无法对DataFrame的MinTemp列分组更新,遇字符串与浮点数比较类型错误

解决TypeError: '>' not supported between instances of 'str' and 'float'问题

这个报错的核心原因很明确:你的MinTemp列目前是字符串类型(object dtype),而你在条件判断里试图把它和浮点数(比如22.0、10.0)做比较,Python当然不允许字符串和数值直接比大小啦!

修复步骤:

  1. 先确认列的类型
    先跑一行代码看看当前列的类型:

    print(data_mod['MinTemp'].dtype)
    

    如果输出是object,那确实是字符串类型,需要先转换。

  2. 将列转换为数值类型
    使用pandas.to_numeric把列转成数值类型,同时处理可能存在的非数值数据(如果有的话):

    import pandas as pd
    data_mod['MinTemp'] = pd.to_numeric(data_mod['MinTemp'], errors='coerce')
    
    • errors='coerce'会把无法转换成数值的内容变成NaN,如果你的数据里没有脏数据,也可以省略这个参数,但加上更稳妥。
  3. 重新执行分组逻辑
    现在列是数值类型了,就可以正常执行你的分组代码了,另外注意最后用Counter的时候,要引用data_mod['MinTemp'],而不是直接写MinTemp(因为它不是全局变量):

    import numpy as np
    from collections import Counter
    
    col = 'MinTemp'
    conditions = [
        data_mod[col] > 22.0,
        (data_mod[col] > 10.0) & (data_mod[col] <= 22.0),
        data_mod[col] <= 10.0
    ]
    choices = [ 'mintp3', 'mintp2', 'mintp1' ]
    data_mod["MinTemp"] = np.select(conditions, choices, default='neutral')
    
    # 修正引用方式,指定DataFrame中的列
    Counter(data_mod['MinTemp'])
    

额外提示:

如果转换后出现NaN值,np.select会把它们归到default='neutral'里,你可以根据需求决定怎么处理这些缺失值(比如提前用data_mod.dropna(subset=['MinTemp'])删掉,或者填充某个合理数值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:00:28