如何从已按publishedAt降序排序的Pandas DataFrame提取近24小时数据
获取Pandas DataFrame中过去24小时的数据
嘿,我来帮你搞定这个需求!既然你的DataFrame已经按publishedAt降序排序好了,接下来只需要几步就能提取出过去24小时的数据,咱们一步步来:
步骤1:确保时间列是datetime类型
首先,你的publishedAt列看起来是ISO格式的字符串(比如2018-05-06T15:22:22Z),得先把它转换成Pandas能识别的datetime类型,这样才能做时间运算:
import pandas as pd # 转换为datetime类型(自动识别UTC时区) df['publishedAt'] = pd.to_datetime(df['publishedAt'])
步骤2:选择筛选基准时间
这里分两种常见场景,你可以根据自己的需求选:
场景A:相对于当前系统时间的过去24小时
如果你想获取现在往前推24小时内的数据,要注意和你的数据时区保持一致(你的数据是UTC时区,所以用UTC时间计算):
# 获取当前UTC时间 current_utc_time = pd.Timestamp.now(tz='UTC') # 计算24小时前的UTC时间 one_day_ago = current_utc_time - pd.Timedelta(days=1) # 筛选数据 last_24h_data = df[df['publishedAt'] >= one_day_ago]
场景B:相对于DataFrame最新记录的过去24小时
如果你的数据集最新记录不是当前时间,想从最新的那条记录倒推24小时获取数据(因为你已经按降序排序了,第一条就是最新的):
# 获取DataFrame中最新的时间(第一条记录的publishedAt) latest_time = df['publishedAt'].iloc[0] # 计算最新时间往前24小时的时间点 one_day_before_latest = latest_time - pd.Timedelta(days=1) # 筛选数据 last_24h_data = df[df['publishedAt'] >= one_day_before_latest]
小提示
- 如果你的
publishedAt列已经是datetime类型了,直接跳过步骤1就行。 - 一定要注意时区统一!你的数据带
Z表示UTC时区,所以计算基准时间时也要用UTC,避免因为时区差导致筛选结果出错。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

