在python中进行迭代时,如何处理datetime的NaT值?

2024-05-15 15:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用下面的代码将日期时间值转换为整数。除了NaT值之外,它工作得很好。如果在迭代中执行此操作,如何处理NaT值以避免出现诸如“NaTType不支持时间元组”之类的错误?

import time
from datetime import datetime
t=datetime.now()
t1=t.timetuple()
int(time.mktime(t1)/60/60/24)

下面是创建示例数据的代码,以及到目前为止我尝试迭代的内容:

创建数据:

df = pd.DataFrame(data={'date':['05/16/16',''], 'Indicator':[1,0]})
df['date']=pd.to_datetime(df['date'])

数据:

   Indicator       date
0          1 2016-05-16
1          0        NaT

迭代代码:

def date2int(df):
    if df.date:
        t=df['date']
        t1=t.timetuple()
        return int(time.mktime(t1))
df['date2int']=df.apply(date2int,axis=1)

错误消息:

回溯(最近一次呼叫时间):

文件“”,第1行,在 df['date2int']=df.apply(date2int,axis=1)

文件“/Users/Chen/anaconda/lib/python2.7/site packages/pandas/core/frame.py”,4042行,在apply中 返回自身。应用标准(f,axis,reduce=reduce)

文件“/Users/Chen/anaconda/lib/python2.7/site packages/pandas/core/frame.py”,第4138行,在“应用”标准中 结果[i]=func(v)

文件“”,第4行,在date2int中 t1=时间元组()

文件“pandas/tslib.pyx”,第723行,在pandas.tslib.make_error_func.f中(pandas/tslib.c:16109)

值错误:(“NaTType不支持时间元组”,在索引1处发生u')


Tags: 文件数据代码pandasdfdatetimedatetime