为啥在带有字符串和 NaN 的系列上得到“TypeError:'float' 类型的参数不可迭代”?

Posted

技术标签:

【中文标题】为啥在带有字符串和 NaN 的系列上得到“TypeError:\'float\' 类型的参数不可迭代”?【英文标题】:Why do get a "TypeError: argument of type 'float' is not iterable" on a series with strings and NaN?为什么在带有字符串和 NaN 的系列上得到“TypeError:'float' 类型的参数不可迭代”? 【发布时间】:2021-07-30 15:03:44 【问题描述】:

对于包含字符串和 NaN 值的系列,为什么series.apply(not_happy)

其中 not_happy 定义为:

def not_happy(element):
    if 'subtring' in element:
        return True
    else:
        return False

给出错误"TypeError: argument of type 'float' is not iterable"

【问题讨论】:

你的系列的 dtype 是什么?字符串(对象)类型?如果是,请查看您的系列是否包含任何 NaN 值。 NaN 值在 Pandas 中被认为是浮点类型。 series.value_counts() 给出了“dtype: int64”,但我可以看到 NaN(我现在理解它的一种浮点数)和字符串。 【参考方案1】:

您应用函数的系列中的一个值不是 str 类型,或者您可能缺少一些值。

【讨论】:

【参考方案2】:

检查元素的数据类型。

def not_happy(element):
    if 'subtring' in str(element):
        return True
    else:
        return False

这将使您的元素字符串类型和工作。

【讨论】:

在这里使用isinstance(element, str) 会更合适。 这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于为啥在带有字符串和 NaN 的系列上得到“TypeError:'float' 类型的参数不可迭代”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥jQuery减法输出NaN?

为啥我在使用 Nginx 和 Gunicorn 的 Django 应用程序上得到 502 Bad Gateway?

为啥我的输出总是以 NaN 的形式出现,我期待输出作为我的系列数据?

在其他机器上得到 404,为啥?

为啥我在 IOS 上得到 Mapboxgl api 的空白页面?

为啥我在这个非常简单的 MySQL 查询上得到文件排序?