从数据框值

时间:2015-11-24 12:10:43

标签: python pandas dataframe pickle

我有一个巨大的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值过滤。

有没有更好的方法---请建议。

1 个答案:

答案 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()默认为追加模式。