You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Pandas中删除时间间隔小于1分钟的DataFrame行

解决DataFrame删除时间间隔小于1分钟行的问题

你的代码newdf=df1[df1['Time'].dt.minute%1==0]无效的原因很明确:dt.minute返回的是0-59的整数,任何整数对1取模结果都是0,这个条件会保留所有行,完全达不到筛选间隔的目的。下面是两种针对性的解决方案:

方案一:保留相邻时间间隔≥1分钟的行

适合需要保留所有与前一行时间差至少1分钟的记录(比如数据中存在不规则间隔的情况):

  1. 先确保时间列是datetime类型(如果还不是的话):
df1['Time'] = pd.to_datetime(df1['Time'])
  1. 如果数据未按时间排序,先排序(这一步很关键,否则时间差计算会出错):
df1 = df1.sort_values('Time').reset_index(drop=True)
  1. 计算相邻行的时间差,筛选符合条件的行:
# 计算时间差(转换为分钟)
time_diff = df1['Time'].diff().dt.total_seconds() / 60

# 保留第一行(无前置行)和时间差≥1分钟的行
newdf = df1[time_diff.isna() | (time_diff >= 1)]

方案二:按1分钟频率重采样(固定间隔取数)

如果你的需求是每个整分钟只保留一条记录(比如从第一个时间点开始,每到整分钟取一个样本),可以用重采样方法:

# 确保时间列是datetime类型
df1['Time'] = pd.to_datetime(df1['Time'])

# 按1分钟间隔重采样,取每个时间段的第一条数据(可替换为mean/max等聚合函数)
newdf = df1.resample('1min', on='Time').first().reset_index()

这个方法会自动处理同分钟内的多条数据,只保留你指定的聚合结果(比如第一条、平均值等)。

内容的提问来源于stack exchange,提问作者Ojas Mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:22:22