2015-07-26 9 views

risposta

1

Sembra che bcolz.ctable abbia un metodo tohdf5 che è possibile utilizzare; tuttavia è necessario installare hdf5, pytables, ecc. In caso contrario, è possibile utilizzare pickle, che è il solito modo di salvare su disco un oggetto Python generico.

A proposito, se sei solo interessato a comprimere i tuoi dati, potresti voler guardare un'opzione più low-tech come gzip; la compressione sarà altrettanto buona se non migliore di un formato dati colonnare, che è più interessato a fare velocemente query contro i tuoi dati.

+0

ho visto un'estensione bcolz chiamato bquery che utilizza la seguente istruzione: ct = bquery.ctable (rootdir = 'example.bcolz'). Quindi immagino che sia possibile salvare un dataframe panda in formato bcolz. E no, non sono solo interessato alla compressione; Voglio anche interrogare. –

+0

hmm guardando i documenti sembra che 'carray' abbia un parametro' rootpath', ma 'ctable' non ... per qualche motivo .... quindi potresti usare un 'carray' invece (perderai comunque i nomi delle tue colonne) – maxymoo

+1

' ctable' supporta anche l'argomento 'rootdir'. Vedi: http://bcolz.blosc.org/tutorial.html#tutorial-on-ctable-objects – Francesc

7

Hai semplicemente bisogno di specificare dove creare la tabella quando si legge nel dataframe, così:

import bcolz 
import pandas as pd 

df = pd.read_csv(open("mydata.csv", 'rb'), delimiter='\t') 
ct = bcolz.ctable.fromdataframe(df, rootdir='dataframe.bcolz') 
+0

rootdir è una dir non un file – wyx