Python 检查datetime列是否为空
我想检查内部函数,比如datetime列是否为空。 我的示例df:Python 检查datetime列是否为空,python,pandas,python-datetime,Python,Pandas,Python Datetime,我想检查内部函数,比如datetime列是否为空。 我的示例df: date_dogovor date_pogash date_pogash_posle_prodl 0 2019-03-07 2020-03-06 NaT 1 2019-02-27 2020-02-05 NaT 2 2011-10-14 2016-10-13 2019-10-13 3 2019-03-28 2020-03-06 NaT 4 2019-04-17 2020-04-0
date_dogovor date_pogash date_pogash_posle_prodl
0 2019-03-07 2020-03-06 NaT
1 2019-02-27 2020-02-05 NaT
2 2011-10-14 2016-10-13 2019-10-13
3 2019-03-28 2020-03-06 NaT
4 2019-04-17 2020-04-06 NaT
我的职能:
def term(date_contract , date_paymnt, date_paymnt_aftr_prlngtn):
if date_paymnt_aftr_prlngtn is None:
return date_paymnt - date_contract
else:
return date_paymnt_aftr_prlngtn - date_contract
将函数应用于df:
df['term'] = df.apply(lambda x: term(x['date_dogovor'], x['date_pogash'], x['date_pogash_posle_prodl']), axis=1 )
结果是错误的:
df['term']
0 NaT
1 NaT
2 NaT
3 NaT
4 NaT
...
115337 NaT
115338 NaT
115339 2921 days
115340 NaT
115341 NaT
Name: term, Length: 115342, dtype: timedelta64[ns]
如何正确检查datetime列是否为空?以下是更好/更快的使用方法:
您的功能应更改为:
您能否通过编辑您的问题添加样本数据(5-6行)以在我们的机器上进行测试,并获得预期结果?预期结果是什么?您使用什么数据创建它?
NaT
和None
是不同的东西
df['term'] = np.where(df['date_pogash_posle_prodl'].isna(),
df['date_pogash'] - df['date_dogovor'],
df['date_dogovor'] - df['date_dogovor'])
def term(date_contract , date_paymnt, date_paymnt_aftr_prlngtn):
if pd.isna(date_paymnt_aftr_prlngtn):
return date_paymnt - date_contract
else:
return date_paymnt_aftr_prlngtn - date_contract