猿问

Python 中的日期时间比较

我有一个 datetime 列,需要查找时间介于任何一天的 9:30 到 17:00 之间的记录。我不关心日期,但需要根据时间过滤数据。


2018-12-28 10:53:24.950

2018-12-28 10:53:55.010

2019-01-02 16:48:31.593

2019-01-02 16:48:31.593

2019-01-02 16:48:31.593

我正在使用以下命令来提取小时数。


df1['hour_of_timestamp'] = df1['User_date'].dt.hour


白衣染霜花
浏览 141回答 3
3回答

DIEA

Pandas确实有一个内置的方法,between_time()来选择特定时间段内的行,但它只适用于datetime对象是索引(或者,最近,列)。由于您已经有一个 datetime 列,因此您可以像这样提取行(从此处调整示例):import pandas as pddata = [["20090102 04:51:00", 89.9900, 89.9900, 89.9900, 89.9900, 100], ["20190102 05:36:00", 90.0100, 90.0100, 90.0100, 90.0100, 200], ["20090102 05:44:00", 90.1400, 90.1400, 90.1400, 90.1400, 100], ["20090102 05:50:00", 90.0500, 90.0500, 90.0500, 90.0500, 500], ["20090102 05:56:00", 90.1000, 90.1000, 90.1000, 90.1000, 300], ["20090102 05:57:00", 90.1000, 90.1000, 90.1000, 90.1000, 200]]# Building sample dataframe with Datetime columndf = pd.DataFrame(data)df.columns = ["Datetime", "1", "2", "3", "4", "5"]df['Datetime'] = pd.to_datetime(df['Datetime'], format="%Y%m%d %H:%M:%S")# Extract rows with datetime matching index rangeprint(df.set_index("Datetime").between_time('5:30:00', '5:45:00'))这将仅输出时间范围之间的记录。                         1      2      3      4    5Datetime                                            2019-01-02 05:36:00  90.01  90.01  90.01  90.01  2002009-01-02 05:44:00  90.14  90.14  90.14  90.14  100

慕姐4208626

您可以使用 解析日期。然后你可以检查并做出决定。d = datetime.datetime.fromisoformat(date_str)d.hourd.minute

catspeake

如果您的日期始终采用YYYY-MM-DD格式,那么为什么不像这样切分字符串以获取时间:time_str = date_str[10:].strip()然后,您可以对时间列表进行排序,并查找9:30至17:00之间的时间。sorted(time_list)
随时随地看视频慕课网APP

相关分类

Python
我要回答