【问题标题】:How to convert string to datetime format in pandas python?如何在 pandas python 中将字符串转换为日期时间格式?
【发布时间】:2015-11-19 04:40:26
【问题描述】:

我在名为 train 的数据框中有一列 I_DATE 类型为 string(object),如下所示。

I_DATE
28-03-2012  2:15:00 PM
28-03-2012  2:17:28 PM
28-03-2012  2:50:50 PM

如何将 I_DATE 从字符串转换为数据时间格式并指定输入字符串的格式。我看到了一些答案,但它不适用于 AM/PM 格式。

另外,如何根据 pandas 中的日期范围过滤行?

【问题讨论】:

    标签: python datetime pandas


    【解决方案1】:

    使用to_datetime,不需要格式字符串,解析器足以处理它:

    In [51]:
    pd.to_datetime(df['I_DATE'])
    
    Out[51]:
    0   2012-03-28 14:15:00
    1   2012-03-28 14:17:28
    2   2012-03-28 14:50:50
    Name: I_DATE, dtype: datetime64[ns]
    

    要访问日期/日期/时间组件,请使用 dt 访问器:

    In [54]:
    df['I_DATE'].dt.date
    
    Out[54]:
    0    2012-03-28
    1    2012-03-28
    2    2012-03-28
    dtype: object
    
    In [56]:    
    df['I_DATE'].dt.time
    
    Out[56]:
    0    14:15:00
    1    14:17:28
    2    14:50:50
    dtype: object
    

    可以使用字符串过滤为例:

    In [59]:
    df = pd.DataFrame({'date':pd.date_range(start = dt.datetime(2015,1,1), end = dt.datetime.now())})
    df[(df['date'] > '2015-02-04') & (df['date'] < '2015-02-10')]
    
    Out[59]:
             date
    35 2015-02-05
    36 2015-02-06
    37 2015-02-07
    38 2015-02-08
    39 2015-02-09
    

    【讨论】:

    • 如果你有一个字符串格式,其中日期被描述为 15.05.2010 这个方法不会总是把它变成正确的日期时间因此你需要解析
    • @Yags 在原始问题中您的格式在哪里指定?问题和答案是具体的,不是涵盖不同格式的通用解决方案
    【解决方案2】:

    方法:1

    给定原始string 格式:2019/03/04 00:08:48

    你可以使用

    updated_df = df['timestamp'].astype('datetime64[ns]')

    结果将采用datetime 格式:2019-03-04 00:08:48

    方法:2

    updated_df = df.astype({'timestamp':'datetime64[ns]'})

    【讨论】:

      猜你喜欢
      • 2013-10-04
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多