如何用Pandas读取Excel中最新时间ID的行并计算写入独立文件
解决方案:仅同步Excel中新增的最新时间行到CSV
核心思路
每次循环时,记录上一次处理的最晚时间戳,只读取Excel中时间晚于该时间戳的行,将这些新行追加写入CSV(而非覆盖),同时更新记录的最晚时间,确保后续循环只处理真正新增的数据。
具体实现(Python示例)
用pandas处理Excel读取和CSV写入,搭配openpyxl引擎读取xlsx文件,步骤如下:
- 安装依赖:
pip install pandas openpyxl
- 代码示例:
import pandas as pd from datetime import datetime import time # 初始化上次处理的最晚时间(第一次运行设为极早时间) last_processed_time = datetime.min # 循环处理逻辑 while True: try: # 只读模式读取Excel,避免DDE写入时的文件占用冲突 df_excel = pd.read_excel("你的数据文件.xlsx", engine="openpyxl", parse_dates=["Time"]) # 筛选出时间晚于上次处理的行 new_rows = df_excel[df_excel["Time"] > last_processed_time] if not new_rows.empty: # 追加写入CSV:第一次写时保留表头,后续只写数据 write_header = last_processed_time == datetime.min new_rows.to_csv("计算用数据.csv", mode="a", index=False, header=write_header, encoding="utf-8") # 更新上次处理的最晚时间为新行中的最大时间 last_processed_time = new_rows["Time"].max() # 这里执行你的计算函数,比如基于新写入的CSV或直接用new_rows # your_calculation_function() # 控制循环间隔,避免频繁读取占用资源(比如每2秒一次) time.sleep(2) except Exception as e: print(f"处理出错: {str(e)}") time.sleep(5) # 出错后暂停5秒再重试
关键注意事项
- 时间格式兼容:确保Excel的
Time列能被pandas解析为datetime类型,如果是自定义字符串格式,需在read_excel中指定date_parser参数。 - 文件占用问题:必须用只读模式读取Excel,否则DDE服务器写入时会触发文件锁定错误;若仍有冲突,可尝试复制Excel临时文件再读取。
- 重复行处理:如果DDE可能写入重复时间的行,可在筛选时加入
drop_duplicates(subset=["Time"], keep="last")去重。 - 循环间隔:根据数据更新频率调整
sleep时长,平衡实时性和资源消耗。
内容的提问来源于stack exchange,提问作者Show_man
相关产品推荐
相关产品推荐

