如何在Python / Pandas中仅表示日期的小时部分

时间:2015-01-26 07:51:50

标签: python datetime pandas

我有一个表示每日时间表的CSV文件,例如

1, a, b, 10:00, 12:00

意味着从ab的旅程1每天10:00起飞,到达12:00。

我需要将这些数据加载到Pandas数据框中并方便地处理它,例如查找特定时间之间的旅行或按出发时间排序。

在Pandas中仅表示日期的小时和分钟部分的推荐方法是什么?

2 个答案:

答案 0 :(得分:2)

我只是将它存储为时间对象。您将能够根据其他时间对象进行排序/切片(比为H存储一个列更方便,对于Min存储一个更方便)。

前:

import datetime as dt
t0 = dt.time(hour=12, minute=10)
print t0.hour

12

将时间对象放入数据帧(将它们作为字符串加载,然后使用apply转换为时间对象)应该非常简单。

如果您需要帮助,请告诉我。

答案 1 :(得分:0)

如果有这样的文件:

<强> test.csv

trip,from,to,start,end
1,a,b,10:00,12:00
2,d,c,09:00,10:00

您可以使用以下方式导入它:

>>> df = pd.read_csv('test.csv', index_col=0, parse_dates=[3, 4])
>>> df
      from  to   start     end
trip                          
1        a   b   10:00   12:00
2        d   c   09:00   10:00

然后你可以查询它:

>>> df[df['start'] > '9:30']
     from to               start                 end
trip                                                
1       a  b 2015-01-26 10:00:00 2015-01-26 12:00:00

或者只使用小时作为整数:

>>> df['hour'] = df['start'].apply(lambda x: x.hour)
>>> df
     from to               start                 end  hour
trip                                                      
1       a  b 2015-01-26 10:00:00 2015-01-26 12:00:00    10
2       d  c 2015-01-26 09:00:00 2015-01-26 10:00:00     9