如何在pandas中将字节对象类型转换为日期时间类型

4

我有一个数据框中已经从Mysql数据库导入的以下列:

atst 
b'2017-01-17 01:50:00'
b'2017-01-17 01:50:00'
b'2017-01-17 01:50:00'

我需要将其转换为日期时间格式,我已经尝试过这种方法,但它会在列中放置Nat:

 df1['atst']=df['atst'].str.decode("utf-8")
 df1['atst']=pd.to_datetime(df1['atst'])

我之所以选择解码为UTF-8,是因为在不解码的情况下尝试进行转换时,会出现以下错误:

Unknown string format
1个回答

6
您的列的内容是由字符串组成的,并非字节字符串,因此不再需要从UTF-8解码,因为它们已经被解码过了。
相反,将元素从第一个索引开始切片到结束,就像处理任何其他字符串一样。请注意,0表示字符串中存在的第一个字符,结果会省略它。
pd.to_datetime(df['atst'].str.slice(1))

0   2017-01-17 01:50:00
1   2017-01-17 01:50:00
2   2017-01-17 01:50:00
Name: atst, dtype: datetime64[ns]

如果您的数据框是按照以下格式组合的,则str.decode步骤将正常工作:

# note b is prefixed in front of quotes
d = pd.DataFrame(dict(atst_mod=[b"2017-01-17 01:50:00", b"2017-01-17 01:50:00", 
                                b"2017-01-17 01:50:00"]))  
pd.to_datetime(d['atst_mod'].str.decode("utf-8"))

0   2017-01-17 01:50:00
1   2017-01-17 01:50:00
2   2017-01-17 01:50:00
Name: atst_mod, dtype: datetime64[ns]

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