【问题标题】:'NaTType' object has no attribute 'isna' [duplicate]“NaTType”对象没有属性“isna”[重复]
【发布时间】:2021-12-04 00:20:53
【问题描述】:

我正在尝试根据其他列的值在以下 Pandas DataFrame 中创建一个新列“Var”。我在处理NaN、NaT 时遇到问题。

数据: (在上一步的Date 列上使用了apply(pd.to_datetime))

Date C A Age
2017-12-13 1233.0 N 9
NaT NaN N 5
2007-09-24 49.0 N 14

代码:

def program(Flat):
    if Flat['A'] == 'N' :
        return 0
    elif Flat['Date'].isna() :
        return Flat['Age'] + 1
    elif Flat['C'] < 365 :
        return 1
    elif Flat['C'] >= 365 :
        return math.floor((Flat['C'])/365.25) + 1

Flat['Var'] = Flat.apply(program, axis=1)

错误:AttributeError:“NaTType”对象没有属性“isna”

尝试通过 Anaconda 和 Python 运行。都是一样的错误。 熊猫版本是 1.3.3。

检测NaT类型的正确方法是什么?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    “NaT”(用于日期/时间类型)和“NaN”不同。但是,您可以对这两种类型使用“isnull”函数:

        elif pd.isnull(Flat['Data']):
    

    【讨论】:

    • 感谢您的回复。我试过但仍然是同样的问题。 'AttributeError: 'NaTType' 对象没有属性 'isnull'
    • 我的错误。它是一个向其传递值的函数,而不是类型的属性。我修好了。
    • 太棒了!谢谢!那么在这种情况下 pd.isnull() 是通过数据帧 Flat['Data'] 读取值吗?
    • 好吧,Flat['Data'] 返回一个对象。它是日期时间对象或 NaTType 对象。全局isnull 函数可以区分它们。
    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2016-09-20
    • 2013-06-25
    • 2018-09-12
    • 2019-11-09
    相关资源
    最近更新 更多