2016-04-20 8 views
0

Ich versuche, die Speicherung von Pandas DataFrames im HDF5-Format zu lernen.HDF5-Datei von einem anderen Skript lesen

I Pandas 0.17.1 auf Python 3.4.3

In zwei Jupiter Notebooks auf dem gleiche Verzeichnis verwenden, in hdf5_write.ipynb ich habe:

import pandas as pd 
import numpy as np 
df = pd.DataFrame(np.arange(100,120).reshape(5,4),index=[10,11,12,13,14],columns=[20,21,22,23]) 
df 

enter image description here

storew = pd.HDFStore('test.h5') 
storew['df'] = df 
storew 

enter image description here

storer = pd.HDFStore('test.h5') 
df2 = storer['df'] 
df2 

enter image description here

jedoch im Skript hdf5_read.ipynb Ich kann die hdf5 Datei lesen zurück !:

import pandas as pd 
import numpy as np 
storer = pd.HDFStore('test.h5') 
storer 

out

Die Datei auf der Festplatte vorhanden ist, aber es ist leer. Es ist unter meinem Home-Verzeichnis, also glaube ich nicht, dass es ein Problem mit Berechtigungen ist. Ferner, die in meinem realen Fall führt zu diesem Test habe ich eine großes DataFrame, für die die Datei nicht leer ist, aber noch habe ich einen HDF5ExtError Fehler, wenn ich versuche, es von einem anderen Skript zurück zu lesen: out

ich schon einen ähnlichen Blick auf die SO question, aber das scheint auf eine viel ältere Pandas zu beruhen, während meine Installation aktueller ist. pd.show_version() zurückkehrt:

INSTALLED VERSIONS 
------------------ 
commit: None 
python: 3.4.3.final.0 
python-bits: 64 
OS: Linux 
OS-release: 3.13.0-83-generic 
machine: x86_64 
processor: x86_64 
byteorder: little 
LC_ALL: None 
LANG: en_US.UTF-8 

pandas: 0.17.1 
nose: 1.3.1 
pip: 1.5.4 
setuptools: 3.3 
Cython: None 
numpy: 1.10.4 
scipy: 0.13.3 
statsmodels: None 
IPython: 4.0.0 
sphinx: 1.2.2 
patsy: None 
dateutil: 2.5.0 
pytz: 2015.7 
blosc: None 
bottleneck: 1.0.0 
tables: 3.1.1 
numexpr: 2.5 
matplotlib: 1.3.1 
openpyxl: None 
xlrd: None 
xlwt: None 
xlsxwriter: None 
lxml: None 
bs4: None 
html5lib: 0.999 
httplib2: 0.8 
apiclient: None 
sqlalchemy: None 
pymysql: None 
psycopg2: None 
Jinja2: None 
+1

Sie müssen .close() Shop – Jeff

+0

@ Jeff: Ja, ich habe die "Lern Pandas" Buch folgte, dass sie es nicht erwähnen , aber es benötigt einen Aufruf zum Schließen(). Auch wenn Sie die Datei nicht nur einmal schließen, bleibt die Datei für die weitere Verwendung problematisch. Danke – Antonello

+0

natürlich, das ist wie ein gepuffertes Dateisystem; weiterhin ist es auf einen einzigen Schreiber beschränkt; siehe die Vorbehalte – Jeff

Antwort

-1

Warum Sie speichern sie nicht als csv?

import pandas as pd 
import numpy as np 
df = pd.DataFrame(np.arange(100,120).reshape(5,4),index=[10,11,12,13,14],columns=[20,21,22,23]) 
df.to_csv('test.csv') 

Dann in Ihrem zweiten Notebook:

import pandas as pd 
import numpy as np 
df = pd.read_csv('test.csv') 
+0

.. weil ich versuche HDF5 zu lernen, da wir komplexe Daten austauschen müssen, die mehrere df hat, und HDF5, wenn Arbeiten, könnte nur bequemer sein .. – Antonello

+0

Ok, meine Antwort ist Off-Topic dann, Entschuldigung (und ich weiß nicht über HDF5, also kann ich dir nicht helfen) – ysearka

Verwandte Themen