Pandas:为None值设置默认日期时间

3

我有一个Pandas数据帧,其中的列包含以字符串形式表示的日期(以SQL格式为例)。但是,许多单元格包含None值。我试图使用to_datetime将这些列转换为Pandas日期,并为包含None值的单元格设置“默认”值。下面是示例代码:

import pandas as pd

>>> d = {'a': [1,2,3],
        'd1': ['2016-01-01','2015-10-02',None],
        'd2': [None,'2016-04-03',None]}
>>> df = pd.DataFrame(d)
>>> print df
   a          d1          d2
0  1  2016-01-01        None
1  2  2015-10-02  2016-04-03
2  3        None        None


>>> date_cols = ['d1','d2']
>>> df[date_cols] = df[date_cols].apply(pd.to_datetime)
>>> print df
   a         d1         d2
0  1 2016-01-01        NaT
1  2 2015-10-02 2016-04-03
2  3        NaT        NaT

将有效字符串转换为日期非常简单,我只想用default_date替换NaT。这就是我希望最终数据框看起来的样子:

>>> default_date = '2015-01-01'
>>> print df
   a         d1         d2
0  1 2016-01-01 2015-01-01
1  2 2015-10-02 2016-04-03
2  3 2015-01-01 2015-01-01   

1
在最后调用 fillna 没有起作用吗? - IanS
1个回答

4

使用fillna方法

df[date_cols] = df[date_cols].fillna(pd.to_datetime('2015-01-01'))
df

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接