Python 如何按时间筛选数据帧
我需要根据时间过滤我的df。在读取csv文件时,我将“S2Date”列解析为日期。对于s2Time,我使用了Python 如何按时间筛选数据帧,python,pandas,Python,Pandas,我需要根据时间过滤我的df。在读取csv文件时,我将“S2Date”列解析为日期。对于s2Time,我使用了df['s2Time']=pd.to_datetime(df[“s2Time”]),因此它的格式是时间戳。现在,我需要单独按时间查找或过滤df,即在上午9点到中午12点之间查找记录,或者考虑在15:00到16:15之间查找df以下的记录 我怎样才能做到这一点?我可以按日期进行筛选,但按时间我有问题。有没有人能帮我或给我指出正确的学习地点 我的DF: S2Saleid
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
您可以使用pandas
interference\u 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
以下内容也很有用
time1 = pd.to_datetime('2020-08-13 15:00:00').strftime('%H:%M')
time2 = pd.to_datetime('2020-01-01 16:15:00').strftime('%H:%M')
df.loc[(df['S2Time'].dt.strftime('%H:%M') > time1 ) & (df['S2Time'].dt.strftime('%H:%M') < time2)]
time1=pd.to_datetime('2020-08-13 15:00:00')。strftime('%H:%M'))
time2=pd.to_datetime('2020-01-01 16:15:00')。strftime('%H:%M'))
df.loc[(df['S2Time'].dt.strftime('%H:%M')>time1)和(df['S2Time'].dt.strftime('%H:%M')
您能添加一个可执行的df示例吗?但这只允许选择特定日期,需要3行代码,大约比我的即时方法慢4倍。@Scotty1-是的,先生,确实您的代码很快,所需时间比我的要少。但我提供了另一种解决方案,我对熊猫太陌生了。是的,这是真的,这是一个有效的解决方案。:)@是的,先生,毫无疑问。祝你今天愉快:)