Python 避免hdf5或sqlite中的重复数据

Python 避免hdf5或sqlite中的重复数据,python,sqlite,pandas,hdf5,Python,Sqlite,Pandas,Hdf5,我正在对30天的历史数据进行修改 希望我能阅读历史数据,并让它参考30天的动态滚动日期。“DateTime”值是原始数据中的一列 df_new = df = pd.read_csv(loc+filename) max_date = df_new['DateTime'].max() date_range = max_date - Timedelta(30, unit='d') df_old = pd.read_hdf(loc+filename,'TableName', where = [('ma

我正在对30天的历史数据进行修改

希望我能阅读历史数据,并让它参考30天的动态滚动日期。“DateTime”值是原始数据中的一列

df_new = df = pd.read_csv(loc+filename)
max_date = df_new['DateTime'].max()
date_range = max_date - Timedelta(30, unit='d')

df_old = pd.read_hdf(loc+filename,'TableName', where = [('max_date > date_range')])
然后,我将读取新数据,它是一个单独的文件,始终是月到日期的值(例如,整个6月,该文件每天都被最新数据替换),并将它们合并到旧数据框中

frames = [df_old, df_new]
df = pd.concat(frames)
然后我对文件做了一些事情(我检查某些值是否在30天的窗口内重复,如果重复,则在列中放置时间戳)

现在我想将修改后的数据添加回名为df_old的原始文件(它是HDF5,但也可以是.sqlite文件)。可以肯定的是,由于我正在阅读前30天的数据和MTD数据,因此存在大量重复数据。我如何管理这个

我唯一的解决方案是读取整个文件(df_old和我添加的新数据),然后删除重复项,然后再次覆盖它。这不是很有效


.sqlite或.hdf格式能否强制执行非重复?如果是这样,那么我有3列来标识唯一的值(日期、EmpID、CustomerID)。我不想要完全重复的行。

在sqlite中将它们定义为主键。它不允许您拥有一组非唯一的主键

e、 g

不允许在数据中添加重复的a、b。然后使用
插入或忽略
以添加数据,任何重复项都将被忽略


您是否看到过插入或忽略?()请注意,在Sqlite表中,您需要一个唯一的键列,或者可能只是一个整数主键,而不是键入唯一元组(日期、EmpID、CustomerID)。我是否应该首先在命令提示符下创建表,然后添加实际的原始数据(1.6gig csv文件)。我在Firefox sqlite扩展中遇到了创建主键的问题,没有看到忽略选项。您可以在sqlite命令提示符下创建表,也可以通过python中的连接创建表。请参阅sqlite3 python库。我可能会在sqlite3中创建表,然后通过sqlite3库从python连接到sqlite,然后在python中循环所有行,同时将它们添加到sqlite3数据库。
CREATE TABLE table (
a INT,
b INT,
c INT,
PRIMARY KEY(a,b)
);