错误:“浮动”对象没有属性“ isna””

时间:2019-11-30 16:23:05

标签: python pandas

我有以下系列文章:

my_series = pd.Series([np.nan, np.nan, ['A', 'B']])

我必须遍历my_series并评估该值是否为NaN,然后​​执行某些操作(为简单起见,将动作定义为“ do A”和“ do B”)。

第一次尝试:

for element in my_series:
    if element.isna():
        print('do A')
    else:
        print('do B')

运行它时,出现错误:“'float'对象没有属性'isna'”

在以下问题中进行

第二次尝试Error: float object has no attribute notnull

for element in my_series:
    np.where(element.isnull(), 'do A', 'do B')

运行它时,出现错误:“ AttributeError:'float'对象没有属性'isnull'

我在StackOverflow上没有发现任何其他类似的问题,我不知道还有什么可以尝试的。

2 个答案:

答案 0 :(得分:1)

将代码更改为:

for element in my_series:
    if type(element) == float and pd.isna(element):
        print('do A')
    else:
        print('do B')

根据 Peter

的评论进行编辑

我故意没有改变处理源代码的原始概念 串联循环。 看起来这两个打印说明都是“占位符” 替换为 NaN 值的一段代码,而其他值的另一段代码。

答案 1 :(得分:1)

不需要显式的for循环。根据您的第二次尝试:

# Setup
my_series = pd.Series([np.nan, np.nan, ['A', 'B']])

# Solution
np.where(my_series.isnull(), 'do A', 'do B')                                              

# Output
array(['do A', 'do A', 'do B'], dtype='<U4')