如何将Byte对象类型转换为PANDAS中的DateTime



我在数据框中具有以下列,它已经从mysql db中导入:

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

我需要将其转换为DateTime,我已经尝试了这种方法,但是它将NAT放在列中:

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

我解码为UTF-8的原因是,当我尝试转换它而不解码时,我会收到以下错误:

Unknown string format

列的内容由 strings 组成,而不是 byte-strings ,因此无需从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]

最新更新