如何在Python/Pandas中仅表示日期的小时部分
我有一个CSV文件,表示每天的日程安排,例如如何在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
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