【问题标题】:conversion of np.array(dtype='str') in an np.array(dtype='datetime')np.array(dtype='str') 在 np.array(dtype='datetime') 中的转换
【发布时间】:2016-09-15 18:08:45
【问题描述】:

我需要将np.array 中的字符串值转换为日期时间值。字符串值包含以下格式:('%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 datetime pandas numpy


    【解决方案1】:

    你可以创建一个DataFrame,然后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]')
    

    【讨论】:

    • 感谢您的遮阳篷。即使使用整数值,它也能正常工作。
    【解决方案2】:

    将数组的每个元素转换为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]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 2019-06-09
      相关资源
      最近更新 更多