【发布时间】:2017-05-19 21:26:01
【问题描述】:
我有以下代码从 CSV 读取并写入 PyTables。但是, pd.read_csv 创建了一个数据框,这在 PyTables 中没有处理。我该如何解决这个问题?我可以创建 numpy 数组,但这似乎过于杀戮并且可能很耗时? (交易记录是我用正确的数据类型创建的一个类 - 如果使用 numpy,我必须复制它)
def get_transaction_report_in_chunks(transaction_file):
transaction_report_data = pd.read_csv(transaction_file, index_col=None, parse_dates=False, chunksize=500000)
return transaction_report_data
def write_to_hdf_from_multiple_csv(transaction_file_path):
hdf = tables.open_file(filename='MyDB.h5', mode='a')
transaction_report_table = hdf.create_table(hdf.root, 'Transaction_Report_Table_x', Transaction_Record, "Transaction Report Table")
all_files = glob.glob(os.path.join(transaction_file_path, "*.csv"))
for transaction_file in all_files:
for transaction_chunk in get_transaction_report_in_chunks(transaction_file):
transaction_report_table.append(transaction_chunk)
transaction_report_table.flush()
hdf.Close()
【问题讨论】:
-
是否有充分的理由不使用标准 Pandas
DataFrame.to_hdf()或HDFStore.append等? -
并非如此。我只是不确定这对于大型数据集和查询特定列上的表是否足够好。另一个问题是,如果查询返回的结果无法在内存中计算,我不确定我将如何处理?
标签: python pandas numpy hdf5 pytables