将字符串转换为未分析的datetime“Feb”month

2024-04-27 04:34:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一系列字符串对象,格式如下:

lcd['dates'] = ['Sep-2014', 'Feb-2014', 'Apr-2014', 'Oct-2013', 'Oct-2014',...]

我正在尝试将它们转换为日期时间格式(四舍五入为天),如下所示:

^{pr2}$

这似乎适用于除2月以外的所有月份:

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',...

我被难住了。在


Tags: 对象字符串innewlcd格式时间timestamp
3条回答

to\u 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)

这里简要地提到here

您可以指定以下格式:

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

印刷品:

^{pr2}$

还要查看datetime的所有格式选项。在

相关问题 更多 >