gpt4 book ai didi

python - 将文本日期转换为日期,然后保留 NA 值

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:20 24 4
gpt4 key购买 nike

我有一个包含日期字段作为文本的数据框。

我使用以下方法将日期字段转换为日期时间对象:

df['date'] = pd.to_datetime(df['date'])

正在做:

df['date']

产生这样的东西:

0    2012-06-28 09:36:21
1 2013-05-21 14:52:57
2 2011-10-14 16:31:34
3 2011-11-11 12:51:13
4 2013-02-07 15:33:22
5 2013-01-02 14:40:08
6 2013-06-24 14:49:40
7 2013-07-15 15:29:26
8 2011-11-04 12:17:32
9 2013-04-29 17:31:43
10 2013-06-24 15:00:06
11 2012-10-22 18:23:53
12 NaT
13 NaT
14 2011-12-13 10:06:18

现在我将日期时间对象转换为日期对象:

df['date'].apply(try_convert_date)

(请参阅下文了解如何定义 try_to_convert)。我得到:

0       2012-06-28
1 2013-05-21
2 2011-10-14
3 2011-11-11
4 2013-02-07
5 2013-01-02
6 2013-06-24
7 2013-07-15
8 2011-11-04
9 2013-04-29
10 2013-06-24
11 2012-10-22
12 0001-255-255
13 0001-255-255
14 2011-12-13

其中“NaT”值已转换为“0001-255-255”。我如何避免这种情况并在这些单元格中保留“NA”?

提前致谢

def try_convert_date(obj):

try:
return obj.date()
except: #AttributeError:
return 'NA'

最佳答案

问题是 pd.NaT.date() 不会引发错误,它会返回 datetime.date(1, 255, 255),所以永远不会到达捕获异常的代码部分。您必须检查该值是否为 pd.NaT,在这种情况下返回“NA”。在所有其他情况下,您可以安全地返回 obj.date(),因为该列具有 datetime64 dtype。

def try_convert(obj):
if obj is pd.NaT:
return 'NA'
else:
return obj.date()

n [17]: s.apply(try_convert)
Out[17]:
0 2012-06-28
1 2013-05-21
2 2011-10-14
3 2011-11-11
4 2013-02-07
5 2013-01-02
6 2013-06-24
7 2013-07-15
8 2011-11-04
9 2013-04-29
10 2013-06-24
11 2012-10-22
12 NA
13 NA
14 2011-12-13
Name: 1_2, dtype: object

关于python - 将文本日期转换为日期,然后保留 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com