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

Pandas含NaN值DataFrame转换分数赔率时报Iterable TypeError如何解决

解决方法

报错原因

你触发报错的根源是DataFrame中的空值NaN属于float类型,当convert函数接收到NaN值时,执行if '/' in s逻辑时会尝试对float类型做迭代判断,就会抛出「float类型不可迭代」的错误。

修改后的实现代码

import pandas as pd

def convert(s):
    # 空值直接返回,保留原有NaN
    if pd.isna(s):
        return s
    # 转字符串判断兼容部分已经是数值类型的赔率
    if '/' in str(s):
        num, den = s.split('/')
        return 1 + int(num) / int(den)
    else:
        return float(s)

# 批量处理三列赔率
odds_cols = ['home_odds', 'draw_odds', 'away_odds']
df[odds_cols] = df[odds_cols].apply(convert)

逻辑说明

  • 优先判断输入是否为空值,是空值直接返回不做处理,完全保留原DataFrame的空值分布
  • 增加了转字符串的判断兜底,避免部分已经是数值格式的赔率触发同样的类型错误
  • 批量处理列的写法替代重复的三次apply调用,代码更简洁易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:09:01