我刚开始学习Pandas和Python。我想在我的脚本中进行一些日期时间操作。 我从一个CSV文件中获取的日期时间信息格式如下:01APR2017 6:59
如何将其转换为Pandas日期时间格式?类似于:2017-04-01 06:59:00
我刚开始学习Pandas和Python。我想在我的脚本中进行一些日期时间操作。 我从一个CSV文件中获取的日期时间信息格式如下:01APR2017 6:59
如何将其转换为Pandas日期时间格式?类似于:2017-04-01 06:59:00
format
的to_datetime
函数:s = pd.Series(['01APR2017 6:59','01APR2017 6:59'])
print (s)
0 01APR2017 6:59
1 01APR2017 6:59
dtype: object
print (pd.to_datetime(s, format='%d%b%Y %H:%M'))
0 2017-04-01 06:59:00
1 2017-04-01 06:59:00
dtype: datetime64[ns]
read_csv
中使用date_parser
:import pandas as pd
from pandas.compat import StringIO
temp=u"""date
01APR2017 6:59
01APR2017 6:59"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
parser = lambda x: pd.datetime.strptime(x, '%d%b%Y %H:%M')
df = pd.read_csv(StringIO(temp), parse_dates=[0], date_parser=parser)
print (df)
date
0 2017-04-01 06:59:00
1 2017-04-01 06:59:00
print (df.date.dtype)
datetime64[ns]
评论编辑:
如果值无法解析为 datetime
,则添加参数 errors='coerce'
将其转换为 NaT
:
s = pd.Series(['01APR2017 6:59','01APR2017 6:59', 'a'])
print (s)
0 01APR2017 6:59
1 01APR2017 6:59
2 a
dtype: object
print (pd.to_datetime(s, format='%d%b%Y %H:%M', errors='coerce'))
0 2017-04-01 06:59:00
1 2017-04-01 06:59:00
2 NaT
dtype: datetime64[ns]
df['col'] = df['col'].astype(str)
,但如果数据类似于01APR2017 6:59
,它是字符串而不是浮点数。 - jezrael