查看日期时间的所有格式选项。
我有一系列字符串对象,格式如下:
lcd['dates'] = ['Sep-2014', 'Feb-2014', 'Apr-2014', 'Oct-2013', 'Oct-2014',...]
我正在尝试将它们转换为日期时间格式(四舍五入到天),如下所示:
lcd['new dates'] = [pd.to_datetime(j, unit = "D",exact=False) for j in lcd.dates]
这似乎对所有月份都有效,除了Feb:
In: lcd['new_dates'].unique():
Out:Timestamp('2013-05-29 00:00:00'), Timestamp('2015-03-29 00:00:00'),
Timestamp('2012-06-29 00:00:00'), 'Feb-2015',
Timestamp('2012-12-29 00:00:00'), Timestamp('2014-07-29 00:00:00'),
Timestamp('2014-09-29 00:00:00'), 'Feb-2014',...
我难住了。
您可以指定如下格式:
import pandas as pd
lcd = ['Sep-2014', 'Feb-2014', 'Feb-2015', 'Apr-2014', 'Oct-2013', 'Oct-2014',]
lcd = [pd.to_datetime(j, unit = "D", format='%b-%Y') for j in lcd]
print lcd
打印:
[Timestamp('2014-09-01 00:00:00'), Timestamp('2014-02-01 00:00:00'), Timestamp('2015-02-01 00:00:00'), Timestamp('2014-04-01 00:00:00'), Timestamp('2013-10-01 00:00:00'), Timestamp('2014-10-01 00:00:00')]
to_datetime()有一个format参数,它应该强制它以一种特定的方式解释它。我打赌2月失败的原因是因为今天是29号,这对2月来说(通常)是不好的。(注意其他日期都是29号。我猜它出于某种原因将未指定的日期替换为当前日期。)
使用Period
,这样的数据读起来很好。如果你愿意,你总是可以转换为时间戳(并控制如何转换,例如,月的第一天或最后一天)。
In [1]: PeriodIndex([ Period(p,'M') for p in ['Sep-2014', 'Feb-2014', 'Apr-2014', 'Oct-2013', 'Oct-2014'] ])
Out[1]: PeriodIndex(['2014-09', '2014-02', '2014-04', '2013-10', '2014-10'], dtype='int64', freq='M')
In [2]: PeriodIndex([ Period(p,'M') for p in ['Sep-2014', 'Feb-2014', 'Apr-2014', 'Oct-2013', 'Oct-2014'] ]).to_timestamp()
Out[2]: DatetimeIndex(['2014-09-01', '2014-02-01', '2014-04-01', '2013-10-01', '2014-10-01'], dtype='datetime64[ns]', freq=None, tz=None)
这里简单提一下