【问题标题】:Datetime strptime in Python pandas : what's wrong?Python pandas 中的日期时间 strptime:怎么了?
【发布时间】:2016-08-30 18:55:10
【问题描述】:
import datetime as datetime
datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')

产生

AttributeError Traceback(最近调用 最后)在() 1 导入日期时间作为日期时间 ----> 2 datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S') 3 z = minidf['日期'] 4z

AttributeError: 'module' 对象没有属性 'strptime'

我的目标是转换格式仍然是数据对象的 pandas 数据框列

import datetime as datetime
#datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
z = minidf['Dates']

0     2015-05-13 23:53:00
1     2015-05-13 23:53:00
2     2015-05-13 23:33:00
3     2015-05-13 23:30:00
4     2015-05-13 23:30:00
5     2015-05-13 23:30:00
6     2015-05-13 23:30:00
7     2015-05-13 23:30:00
8     2015-05-13 23:00:00
9     2015-05-13 23:00:00
10    2015-05-13 22:58:00
Name: Dates, dtype: object

额外的问题是,我使用pd.read_csv 函数从具有更多列的较大文件中获得了此列。是否可以传递参数使pd.read_csv直接将其转换为dtype: datetime64[ns]格式

【问题讨论】:

  • 使用datetime.datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')datetime 模块中引用datetime

标签: python datetime pandas strptime


【解决方案1】:

我想你可以用来转换to_datetime:

print pd.to_datetime('2013-01-01 09:10:12', format='%Y-%m-%d %H:%M:%S')
2013-01-01 09:10:12

print pd.to_datetime('2013-01-01 09:10:12')
2013-01-01 09:10:12

如果需要在函数read_csv中转换,添加参数parse_dates

df = pd.read_csv('filename',  parse_dates=['Dates'])

示例:

import pandas as pd
import io

temp=u"""Dates
2015-05-13 23:53:00
2015-05-13 23:53:00
2015-05-13 23:33:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:00:00
2015-05-13 23:00:00
2015-05-13 22:58:00
"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp),  parse_dates=['Dates'])
print df
                 Dates
0  2015-05-13 23:53:00
1  2015-05-13 23:53:00
2  2015-05-13 23:33:00
3  2015-05-13 23:30:00
4  2015-05-13 23:30:00
5  2015-05-13 23:30:00
6  2015-05-13 23:30:00
7  2015-05-13 23:30:00
8  2015-05-13 23:00:00
9  2015-05-13 23:00:00
10 2015-05-13 22:58:00

print df.dtypes
Dates    datetime64[ns]
dtype: object

to_datetime 的另一种解决方案:

print pd.to_datetime(df['Dates'])

示例:

print df
                  Dates
0   2015-05-13 23:53:00
1   2015-05-13 23:53:00
2   2015-05-13 23:33:00
3   2015-05-13 23:30:00
4   2015-05-13 23:30:00
5   2015-05-13 23:30:00
6   2015-05-13 23:30:00
7   2015-05-13 23:30:00
8   2015-05-13 23:00:00
9   2015-05-13 23:00:00
10  2015-05-13 22:58:00

print df.dtypes
Dates    object

df['Dates'] = pd.to_datetime(df['Dates'])
print df
                 Dates
0  2015-05-13 23:53:00
1  2015-05-13 23:53:00
2  2015-05-13 23:33:00
3  2015-05-13 23:30:00
4  2015-05-13 23:30:00
5  2015-05-13 23:30:00
6  2015-05-13 23:30:00
7  2015-05-13 23:30:00
8  2015-05-13 23:00:00
9  2015-05-13 23:00:00
10 2015-05-13 22:58:00

print df.dtypes
Dates    datetime64[ns]
dtype: object

【讨论】:

    【解决方案2】:

    AttributeError: 'module' 对象没有属性 'strptime'

    strptimedatetime 上不可用,但在datetime.datetime 上可用

    >>> from datetime import datetime
    >>> datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
    datetime.datetime(2013, 1, 1, 9, 10, 12)
    

    【讨论】:

      【解决方案3】:

      只导入模块

      >>> import datetime
      >>> datetime.datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
      datetime.datetime(2013, 1, 1, 9, 10, 12)
      

      将模块中的类导入当前上下文:

      >>> from datetime import datetime
      >>> datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
      datetime.datetime(2013, 1, 1, 9, 10, 12)
      >>> 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-04
        • 2014-08-17
        • 2017-09-23
        • 2016-12-07
        • 1970-01-01
        • 2016-01-27
        相关资源
        最近更新 更多