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

如何在Python/Pandas中仅表示日期的小时部分,python,datetime,pandas,Python,Datetime,Pandas,我有一个CSV文件,表示每天的日程安排,例如 1, a, b, 10:00, 12:00 这意味着行程1从a到b每天10:00出发,12:00到达 我需要将这些数据加载到Pandas数据框中,并方便地进行处理,例如查找给定时间之间的行程或按出发时间排序 在Pandas中仅表示日期的小时和分钟部分的推荐方法是什么?我只将其存储为时间对象。您将能够基于其他时间对象进行排序/切片(比存储为一列表示H,一列表示Min更方便) 例: 将时间对象放入数据帧应该非常简单(将它们作为字符串加载,然后使用app

我有一个CSV文件,表示每天的日程安排,例如

1, a, b, 10:00, 12:00
这意味着行程1从
a
b
每天10:00出发,12:00到达

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


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

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

例:

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


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

如果您有这样的文件:

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

如果数据类型空间不是问题,那么您可以将其存储为
datetime64[ns]
,否则只需转换为分钟,并存储为INTS。此映射从“10:00”到今天的10: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