微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 将float64列转换为datetime pandas

我有以下pandas DataFrame列dfA [‘TradeDate’]:

0     20100329.0
1     20100328.0
2     20100329.0
...

我希望将它转换为日期时间.

基于SO上的另一个步骤,我首先将其转换为字符串,然后应用strptime函数.

dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype('int').to_string() ,'%Y%m%d')

但是,这会返回我的格式不正确的错误(ValueError).

我发现的一个问题是列不是正确的字符串,而是对象.

当我尝试:

dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype(int).astype(str),'%Y%m%d')

它返回:必须是Str而不是Series.

解决方法:

您可以使用:

df['TradeDate'] = pd.to_datetime(df['TradeDate'], format='%Y%m%d.0')
print (df)
   TradeDate
0 2010-03-29
1 2010-03-28
2 2010-03-29

但是如果有一些不好的值,添加errors =’coerce’将它们替换为NaT

print (df)
    TradeDate
0  20100329.0
1  20100328.0
2  20100329.0
3  20153030.0
4         yyy

df['TradeDate'] = pd.to_datetime(df['TradeDate'], format='%Y%m%d.0', errors='coerce')
print (df)
   TradeDate
0 2010-03-29
1 2010-03-28
2 2010-03-29
3        NaT
4        NaT

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐