python - 如何按时间过滤熊猫数据框
问题描述
我需要按时间过滤我的df。在读取 csv 文件时,我已将“S2Date”列解析为日期。对于 s2Time ,我使用df['S2Time'] = pd.to_datetime(df["S2Time"])
了它的格式时间戳。现在我需要单独按时间找出或过滤df,即查找上午9点到中午12点之间的记录,或者考虑15:00到16:15之间的df以下。
我怎样才能做到这一点?我能够按日期过滤,但按时间过滤我遇到了问题。任何机构可以帮助或指出我正确的地方来学习它吗?
我的DF:
S2Saleid S2Date S2Time
0 180519011 2019-05-18 2020-08-13 15:15:00
1 180519012 2019-05-18 2020-08-13 15:38:00
2 180519013 2019-05-18 2020-08-13 15:47:00
3 180519014 2019-05-18 2020-08-13 16:21:00
4 180519014 2019-05-18 2020-08-13 16:21:00
解决方案
您可以使用熊猫between_time
方法。在按时间过滤之前将 datetime 列设置为索引:
df.index = df['S2Time']
df.between_time('15:00', '16:15')
# Out:
# S2Saleid S2Date S2Time
# S2Time
# 2020-08-13 15:15:00 180519011 2019-05-18 2020-08-13 15:15:00
# 2020-08-13 15:38:00 180519012 2019-05-18 2020-08-13 15:38:00
# 2020-08-13 15:47:00 180519013 2019-05-18 2020-08-13 15:47:00
或者即时设置索引以避免覆盖输入-df:
df.set_index('S2Time').between_time('15:00', '16:15').reset_index()
# Out:
# S2Time S2Saleid S2Date
# 0 2020-08-13 15:15:00 180519011 2019-05-18
# 1 2020-08-13 15:38:00 180519012 2019-05-18
# 2 2020-08-13 15:47:00 180519013 2019-05-18
推荐阅读
- angular - 有没有人有使用 SSR 在 Angular Unversal 中使用 Swiper.js 的经验?
- java - 创建一个布尔值以查找不同类型的旅行杯
- sql-server - Postgresql VARCHAR 列格式化来自 SQL Server 列的 UNIQUElDENTIFIER 值
- python - 我们如何使用 python 将两个不同的参数存储在一个数组中?
- node.js - 如何在应用程序范围内保留 Socket.io 套接字
- javascript - CSS不透明度过渡不适用于添加类
- python - 我可以在 Sqlite3 中使用 CAST 和 SELECT SUM 命令吗?
- r - r 中的 optiSolve 包
- swift - 如何将 CoreML 模型添加到 Swift 包中?
- react-native - ReactNative:收到新数据时如何更新 ScrollView 内容