如何在 python 中导入日期

how to import dates in python

我有一个 pandas 数据框,其中包含一列(dtype:对象),其中日期表示为:

0    2014-11-07 14:08:00
1    2014-10-18 16:53:00
2    2014-10-27 11:57:00
3    2014-10-27 11:57:00
4    2014-10-08 16:35:00   
5    2014-10-24 16:36:00
6    2014-11-06 15:34:00
7    2014-11-11 10:30:00
8    2014-10-31 13:20:00
9    2014-11-07 13:15:00
10   2014-09-20 14:36:00
11   2014-11-07 17:21:00
12   2014-09-23 08:53:00
13   2014-11-05 09:37:00
14   2014-10-26 18:48:00
...
Name: ts_placed, Length: 13655, dtype: object

我想做的是将列读取为日期,然后根据周拆分数据集。

我尝试做的是:

data["ts_placed"] = pd.to_datetime(data.ts_placed)
data.sort('ts_placed')

没用

TypeError: unorderable types: str() > datetime.datetime()

有人知道在 python 中将日期表示为对象的方法吗?

非常感谢

看起来 to_datetime 不适用于系列。看起来矢量化版本有效:

data['ts_placed'] = [pd.to_datetime(strD) for strD in data.ts_placed]
data.sort('ts_placed')

UPDATE 希望我接受的答案与评论中提出的解决方案相匹配。因此,如果 to_datetime 的矢量化版本是 运行 如果无法转换所有字符串,则不会将矢量转换为数据时间对象。上面的版本将转换那些可以转换的。在任何一种情况下,都应该检查是否所有值都已转换。

使用矢量化版本可以检查使用:

data.ts_placed = pd.to_datetime(data.ts_placed)
if(not isinstance(data.ts_placed[0], pd.lib.Timestamp)):
    print 'Dates not converted correctly'

使用上面的手动矢量化版本:

if(sum(not isinstance(strD, datetime.datetime) for strD in data.ts_placed) > 0):
    print 'Dates not converted correctly'

使用Series.dt方法。

对于日期,您可以使用Series.dt.date:

data['Date Column'] = data['Date Column'].dt.date

对于一周,您可以使用 Series.dt.weekofyear :

data['Week'] = data['Date Column'].dt.weekofyear

然后您将根据周创建新数据:

weekdata = data[data['Week'] == week number] 

sort 现在应该也可以工作了。