熊猫:如何仅转换不为None的列中的值?

时间:2019-04-11 22:30:58

标签: python pandas

熊猫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)

2 个答案:

答案 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时,它将应用您的转换函数

see here

答案 1 :(得分:0)

您可以timestamp

fillna

玩具数据

df.yourcolumn=pd.to_datetime(df.yourcolumn,errors='coerce').fillna(df.yourcolumn)