如何在 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
现在应该也可以工作了。
我有一个 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
现在应该也可以工作了。