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

Python中创建历史DataFrame存储每小时刷新的current_df全量数据

实现历史数据留存的方法

核心思路是给每次刷新的current_df添加时间戳标识,再合并到history_df中,以此区分同一Robot ID在不同时间的记录,确保所有历史数据都被保留。

具体实现步骤

  1. 初始化历史数据集:首次运行时创建空的history_df,或从文件/数据库加载已保存的历史数据。
  2. 为当前数据打时间戳:每获取一次current_df,新增一列(比如refresh_time),记录当前刷新的整点时间(用pd.Timestamp.now().floor('H')可精准取整到小时)。
  3. 合并历史与当前数据:用pd.concat()将带时间戳的current_df追加到history_df,实现全量历史留存。
  4. 持久化存储(可选):若需要长期保存,每次合并后将history_df写入文件或数据库即可。

示例代码

import pandas as pd

# 初始化history_df(首次运行时执行)
if 'history_df' not in locals():
    history_df = pd.DataFrame()

# 模拟每小时获取的current_df数据
current_df = pd.DataFrame({
    'Robot ID': ['R001', 'R002', 'R003'],
    'Distance': [100, 200, 150]
})

# 添加当前刷新的整点时间戳
current_df['refresh_time'] = pd.Timestamp.now().floor('H')

# 合并到历史数据集
history_df = pd.concat([history_df, current_df], ignore_index=True)

# 查看合并后的结果
print(history_df)

按此方法,同一个Robot ID在不同时间的记录会作为独立行存在,完全满足留存所有历史数据的需求。


关于write_dataframe()的去重问题

这个函数的去重行为完全由其实现逻辑决定:

  • 若为自定义函数:直接查看内部代码,确认是否存在针对Robot ID的去重操作(比如调用drop_duplicates(),或写入数据库时设置了Robot ID为主键导致旧数据被覆盖)。
  • 若为第三方库函数:需参考对应文档,但通用的写入函数默认不会自动去重,除非你显式指定去重参数,或目标存储(如数据库表)将Robot ID设为主键,导致写入时同ID旧数据被覆盖。

如果已经给每条记录添加了唯一时间戳,即使Robot ID重复,整条数据仍是唯一的,此时即使write_dataframe()有去重逻辑,也不会误删历史记录(除非它同时将Robot ID和时间戳作为重复判断依据)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:20:28