我有一个巨大的pickle文件,需要每天3小时从每日数据文件(csv文件)更新。
每两个字段中有两个名为TRX_DATE和TIME_STAMP的字段,分别为24/11/2015和24/11/2015 10:19:02。(还有50个加法字段)
所以我正在做的是首先阅读数据框中的巨大泡菜。然后通过与TRX_DATE字段进行比较,删除今天日期的任何值。
然后将该csv文件读取到另一个数据帧。然后附加数据帧并再次创建新的pickle。
我的脚本看起来像
import pandas as pd
import datetime as dt
import pickle
df = pd.read_pickle('hugedata pickle')
Today = dt.datetime.today()
df = df[(df.TRX_DATE > Today)] #delete any entries for today in main pickle
df1 = pd.read_csv(daily data csv file)
df = df.append(df1,ignore_index=True)
df.to_pickle('same huge data pickle')
问题如下
1.这是一个巨大的记忆以及阅读那个巨大的泡菜的时间。
2.i需要将df1附加到df,并且只应保留df中的列,并且如果df1中的任何新列被追加,则应排除它。但我得到的新列值在很多地方都有NUN值。
所以需要这些东西的帮助
1.我有没有办法只阅读小尺寸的csv并附加到pickle文件......(或者阅读pickle是强制性的)
2.可以像将csv转换成泡菜并合并两个泡菜一样。通过load,dump方法(实际上从未使用过)
3.如何从TIME_STAMP字段读取时间并在两个时间戳之间获取数据(按TIME_STAMP过滤)。并将其添加到主要pickle。以前我正在按TRX_DATE值过滤。
有没有更好的方法---请建议。
答案 0 :(得分:2)
HDF5适用于您要做的事情。
import tables
import numpy as np
from pandas import HDFStore,DataFrame
df.to_hdf('test.h5',key='test1') # create an hdf5 file
pd.read_hdf('test.h5',key='test1') # read an hdf5 file
df.to_hdf()默认为追加模式。