如何在pandas

时间:2017-03-15 09:26:40

标签: python pandas datetime dataframe

我在已从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

1 个答案:

答案 0 :(得分:2)

列的内容由字符串而不是字节字符串组成,因此不再需要从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]