如何筛选并排序近24小时的数据集?技术问题求助
问题与解决方案
数据示例
| Temp | last_update |
|---|---|
| 35 | 06-21-2023 08:06:21 |
| 34 | 06-21-2023 08:06:21 |
问题描述
CSV文件包含10万+行自1月1日起的温度数据,last_update列为日期时间格式。需要提取近24小时的数据用于仪表盘展示(如以6月21日8点为终点,展示6月20日8点至6月21日8点的温度变化)。尝试使用tf = df['last_update'].last('24h')或df.last('24h')时,报错:('last' only supports a DatetimeIndex index),但last_update已转为日期时间格式。
解决方法
方法1:将日期列设为索引后使用last()
last()方法仅支持DatetimeIndex类型的索引,而非普通的日期时间列。只需将last_update设为索引即可使用该方法:
import pandas as pd # 确保last_update是datetime类型(若未转换) df['last_update'] = pd.to_datetime(df['last_update'], format='%m-%d-%Y %H:%M:%S') # 设置为DataFrame索引 df = df.set_index('last_update') # 获取近24小时数据 tf = df.last('24h') # 若后续需要恢复原索引,可执行: # df = df.reset_index()
方法2:用布尔索引筛选(不修改索引)
如果不想修改原数据的索引结构,直接通过时间范围筛选:
import pandas as pd # 确保列是datetime类型 df['last_update'] = pd.to_datetime(df['last_update'], format='%m-%d-%Y %H:%M:%S') # 以数据中的最新时间为基准,计算24小时前的时间点 cutoff_time = df['last_update'].max() - pd.Timedelta(hours=24) # 筛选出时间范围内的数据 tf = df[df['last_update'] >= cutoff_time]
内容的提问来源于stack exchange,提问作者Ramon Araneta
相关产品推荐
相关产品推荐

