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

Python如何基于另一Excel的时间戳范围筛选行并导出多工作表?

Python Excel时间范围筛选实现方案

前置依赖

需要用到pandas处理表格数据,openpyxl作为Excel读写引擎,提前执行命令安装:

pip install pandas openpyxl

核心实现思路

  • 统一两个Excel的timestamp时间格式,全部转成pandas内置的datetime64类型,消除秒级和毫秒级的精度差问题
  • 为excel1的所有时间点生成前后2秒的有效区间,合并为可快速判断的时间范围集合
  • 第一次筛选:提取excel2中时间落在上述任意区间的所有行,作为新Excel第一个工作表的内容
  • 第二次筛选:提取excel2中isTrue值为false、且时间不在上述区间的所有行,作为新Excel第二个工作表的内容
  • 将两个筛选结果写入同一个Excel的不同工作表,完成输出

注意:如果excel2的isTrue列存储的是字符串类型的"false",后续筛选条件里的== False需要改成== "false"

可运行参考代码

import pandas as pd

# 读取两个Excel文件,自动转换时间列格式
df1 = pd.read_excel("excel1.xlsx", parse_dates=["timestamp"])
df2 = pd.read_excel("excel2.xlsx", parse_dates=["timestamp"])

# 生成excel1所有时间点的±2秒有效区间
time_ranges = []
for t in df1["timestamp"]:
    start = t - pd.Timedelta(seconds=2)
    end = t + pd.Timedelta(seconds=2)
    time_ranges.append((start, end))

# 判断excel2每行时间是否落在有效区间
def check_time_valid(t):
    for start, end in time_ranges:
        if start <= t <= end:
            return True
    return False
df2["range_flag"] = df2["timestamp"].apply(check_time_valid)

# 分别筛选两个工作表的数据,删除辅助标记列
sheet1_data = df2[df2["range_flag"]].drop(columns=["range_flag"])
sheet2_data = df2[(df2["isTrue"] == False) & (~df2["range_flag"])].drop(columns=["range_flag"])

# 写入最终输出文件
with pd.ExcelWriter("output.xlsx", engine="openpyxl") as writer:
    sheet1_data.to_excel(writer, sheet_name="时间匹配行", index=False)
    sheet2_data.to_excel(writer, sheet_name="非匹配False行", index=False)

效果验证

针对你提供的示例数据,代码运行后输出和预期完全一致:

  • 第一个工作表保留2条时间落在±2秒区间的行
  • 第二个工作表保留1条isTrue为false且不在时间区间的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:54:01