看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)某在线实验平台记录任务开始与结束时间,需计算每次运行耗时,并筛选出耗时超过 1 小时 30 分的样本。
源数据:
import pandas as pd
df = pd.DataFrame({
'task_id': ['T001', 'T002', 'T003'],
'start': ['2025-09-15 08:00:00', '2025-09-15 09:45:00', '2025-09-15 13:15:00'],
'end': ['2025-09-15 09:15:00', '2025-09-15 10:00:00', '2025-09-15 15:00:00']
})
df['start'] = pd.to_datetime(df['start'])
df['end'] = pd.to_datetime(df['end'])
print(df)
输出:
task_id start end
0 T001 2025-09-15 08:00:00 2025-09-15 09:15:00
1 T002 2025-09-15 09:45:00 2025-09-15 10:00:00
2 T003 2025-09-15 13:15:00 2025-09-15 15:00:00
要求:
pd.Timedelta()
构造阈值 1 小时 30 分。duration
,并筛选出 duration > 1h30min
的任务。task_id
与耗时(格式 HH:MM:SS
)。期望结果:
task_id duration
0 T003 01:45:00
import pandas as pd
df = pd.DataFrame({
'task_id': ['T001', 'T002', 'T003'],
'start': ['2025-09-15 08:00:00', '2025-09-15 09:45:00', '2025-09-15 13:15:00'],
'end': ['2025-09-15 09:15:00', '2025-09-15 10:00:00', '2025-09-15 15:00:00']
})
df['start'] = pd.to_datetime(df['start'])
df['end'] = pd.to_datetime(df['end'])
# 1. 构造阈值
threshold = pd.Timedelta(hours=1, minutes=30)
# 2. 计算耗时
df['duration'] = df['end'] - df['start']
# 3. 筛选
result = df[df['duration'] > threshold][['task_id', 'duration']]
print(result)
输出:
task_id duration
2 T003 0 days 01:45:00
pd.Timedelta(hours=1, minutes=30)
生成标准化时间差,可直接与 datetime 差值比较,实现“耗时超过 90 分钟”的快速筛选。
(完)
更新时间:2025-09-14 21:25:10 标签:pandas python 时间 耗时