首页 > 解决方案 > 对 pandas 数据框中的浮点数据类型应用 if else 循环

问题描述

我想将此函数应用于具有浮点值的列,并且我不想将值更改为 int 数据类型,因为它会导致信息丢失。我收到错误''float' object has no attribute 'Radiation'' 这个问题的解决方案是什么,因为我确实想保留浮点数据类型并执行 if elese 循环

辐射列值

=======

查找日期的功能

def wplyer(row):
        if  row.Radiation == 0: 
            return 'Yes' ##### Night value
        else:
            return'No'
    tp= df2_all_rows['Radiation'].apply(wplyer)
    df2_all_rows['Day status'] = tp

标签: pythonpandasif-statementfloating-point

解决方案


您将函数逐行应用于一列,因此每个输入都是该列的一个值,它是一个浮点数。

但是,您的函数希望它按行应用于数据帧,这样行是一个命名元组,您可以使用 row.Radiation 访问它。这就是您收到错误的原因 - 您正在尝试访问浮动上名为“Radiation”的属性,当然,浮动没有这样的属性。

无论如何,你不需要使用apply来完成你的目的。

df2_all_rows['Day status'] = 'No'
df2_all_rows.loc[df2_all_rows['Radiation'] == 0, 'Day status'] = 'Yes'

推荐阅读