首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫日期时间的自动识别

熊猫日期时间的自动识别
EN

Stack Overflow用户
提问于 2017-08-08 06:18:53
回答 3查看 2K关注 0票数 2

我正试图减去两个时刻表,以得到时间上的差异。

train.csv中的源数据如下所示

代码语言:javascript
复制
id,vendor_id,pickup_datetime,dropoff_datetime
id2875421,2,2016-03-14 17:24:55,2016-03-14 17:32:30
id2377394,1,2016-06-12 00:43:35,2016-06-12 00:54:38

我的代码是

代码语言:javascript
复制
train = pd.read_csv('./train.csv')
out = train.dropoff_datetime[0:5] - train.dropoff_datetime[0:5]

我得到了一个错误,结果是:

代码语言:javascript
复制
TypeError: unsupported operand type(s) for -: 'str' and 'str'

这大概是因为datetime列被存储为对象或字符串,而不是日期时间对象。在一些装置中,熊猫能够自动识别这样的日期列。这是怎么安排的?我的经验是,熊猫无法预测地以不同的格式识别日期列。我做错了什么?提前谢谢。

我正在使用Python3.6和熊猫0.20在一个jupyter笔记本。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-08 06:20:28

在熊猫中,不指定日期时间列的自动解析是不可能的。

您需要定义列,以便按参数parse_dates中的read_csv中的位置解析日期时间。

代码语言:javascript
复制
train = pd.read_csv('./train.csv', parse_dates=[2,3])

或按列名称:

代码语言:javascript
复制
train = pd.read_csv('./train.csv', parse_dates=['pickup_datetime','dropoff_datetime'])
代码语言:javascript
复制
print (train.dtypes)
id                          object
vendor_id                    int64
pickup_datetime     datetime64[ns]
dropoff_datetime    datetime64[ns]
dtype: object

out=train.dropoff_datetime[0:5]-train.pickup_datetime[0:5]
print (out)
0   00:07:35
1   00:11:03
dtype: timedelta64[ns]

新列:

代码语言:javascript
复制
train['difference']=train.dropoff_datetime-train.pickup_datetime
print (train)
          id  vendor_id     pickup_datetime    dropoff_datetime difference
0  id2875421          2 2016-03-14 17:24:55 2016-03-14 17:32:30   00:07:35
1  id2377394          1 2016-06-12 00:43:35 2016-06-12 00:54:38   00:11:03
票数 1
EN

Stack Overflow用户

发布于 2017-08-08 06:29:00

代码语言:javascript
复制
train = pd.read_csv('./train.csv')
>>>> train.assign(out=pd.to_datetime(train.dropoff_datetime) - pd.to_datetime(train.pickup_datetime))
          id  vendor      pickup_datetime     dropoff_datetime      out
0  id2875421       1  2016-03-14 17:24:55  2016-03-14 17:32:30 00:07:35
1  id2377394       2  2016-06-12 00:43:35  2016-06-12 00:54:38 00:11:03
票数 1
EN

Stack Overflow用户

发布于 2017-08-08 06:38:41

吉兹拉尔的回答是好的。

另外,以下内容也将有效。

代码语言:javascript
复制
train = pd.read_csv('./train.csv')
train['dropoff_datetime'] = pd.to_datetime(train.dropoff_datetime)
train['pickup_datetime'] = pd.to_datetime(train.pickup_datetime)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45560627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档