在np.array中转换np.array(dtype ='str')(dtype ='datetime')

时间:2016-09-15 18:08:45

标签: python datetime pandas numpy

我有一个非常简单的python问题。我需要将np.array中的字符串值转换为datetime值。字符串值包含以下格式:('%Y%m%d')。有人知道怎么做吗? 这是我的测试数据:

date_str = np.array([['20121002', '20121002', '20121002'],
                     ['20121003', '20121003', '20121003'],
                     ['20121004', '20121004', '20121004']])

我尝试使用pandas库转换此数组。 这是我的代码:

import pandas as pd    
pd.to_datetime(date_str, format="%d%m%Y")

请帮助我,应该有一个非常简单的方法来转换它,并注意我是一个python初学者。

2 个答案:

答案 0 :(得分:0)

您可以创建一个数据框,然后apply创建一个数据框:pd.to_datetime

In [68]: pd.DataFrame(date_str).apply(pd.to_datetime)
Out[68]: 
           0          1          2
0 2012-10-02 2012-10-02 2012-10-02
1 2012-10-03 2012-10-03 2012-10-03
2 2012-10-04 2012-10-04 2012-10-04

为了验证结果的类型,这里是第一列的类型,例如:

In [73]: pd.DataFrame(date_str).apply(pd.to_datetime).iloc[:, 0].dtype
Out[73]: dtype('<M8[ns]')

答案 1 :(得分:0)

将数组的每个元素转换为pandas series,然后执行to_datetime()操作。

In [81]: [pd.to_datetime(pd.Series(x), format="%Y%m%d") for x in date_str]
Out[81]: 
[0   2012-10-02
 1   2012-10-02
 2   2012-10-02
 dtype: datetime64[ns], 0   2012-10-03
 1   2012-10-03
 2   2012-10-03
 dtype: datetime64[ns], 0   2012-10-04
 1   2012-10-04
 2   2012-10-04
 dtype: datetime64[ns]]