熊猫NaT
的价值给我带来了很多麻烦。解决方法是,仅在Timestamps()
不为None时才进行转换。这样,我不会在这些列中以NaT
结尾。我还没有找到只将df.check_in = pd.to_datetime(pd.check_in)
应用于非None
值的方法。
最初我有Timestamp数据类型,在执行了上述的pandas操作之后,我得到的结果是这样的:
457 2015-04-23
458 2015-04-22
459 2015-04-22
460 2015-04-15
461 NaT
462 NaT
463 2014-08-07
464 1993-12-01
465 2007-01-30
但是,我一直无法找到将NaT转换回None的方法。
很抱歉,还有一个更新:我尝试使用apply()
将所有内容都转换为pd.to_datetime()
之后。但是,我得到
df.check_in.apply(lambda x: None if pd.isnull(x))
*** SyntaxError: invalid syntax (<stdin>, line 1)
答案 0 :(得分:0)
尝试一下:
def convert_ts(a):
#do custom conversion respectively
return to_timestamp(a)
df['converted_dates'] = df.apply(lambda x: convert_ts(x['your_ts']) if pd.isna(x['your_ts']) == False else x['your_ts'])
仅当它不是nan时,它将应用您的转换函数
答案 1 :(得分:0)
您可以timestamp
fillna
玩具数据
df.yourcolumn=pd.to_datetime(df.yourcolumn,errors='coerce').fillna(df.yourcolumn)