2017-09-15 6 views
0

J'extrais des données numpy (tous les flottants non nuls) à partir d'un fichier HDF5, puis je les transtypais dans une image pandas puis j'essayais d'afficher les données à l'intérieur, mais cela échoue. Je fais tout cela dans un bloc-notes Jupyter.pandas HDF5 numpy created dataframe ne peut pas utiliser .head() ou display (df)

import h5py # necessary for storing 
import pandas as pd 
from IPython.display import display, HTML 

h5 = h5py.File('some_file') 
predict = h5['path/to/dataset'] # get dataset reference 
predict = predict[:] # load all float data into Numpy array 
col_names = [1, 2, 3] 

pred_df = pd.DataFrame(data=predict, index=predict, columns=col_names) 
# this works 
act_df.describe() 

# these don't 
display(pred_df) 
pred_df.head(5) 

Erreur:

ValueError: The truth value of an array with more than one element is ambiguous. 
Use a.any() or a.all() 

Il semble que mon dataframe est en quelque sorte à tort créé, mais je ne comprends pas pourquoi.

Solution (grâce à con--)

Supprimer , index=predict ->

pred_df = pd.DataFrame(data=predict, columns=col_names) 

Bonus

Si vous obtenez l'erreur suivante après le chargement de votre ensemble de données à partir d'un fichier HDF5:

ValueError: DataFrame constructor not properly called! 

Cela signifie que vous avez oublié de faire:

predict = predict[:] # load all float data into Numpy array 

Répondre

1

Je pense que le problème est que vous définissez l'index à prédire. Vous voulez probablement laisser l'index seul et faire créer des pandas pour vous. Vous essayez de sélectionner les 5 premiers éléments dans l'index, mais l'index n'est pas des nombres entiers, c'est l'ensemble de données de chargements que vous avez chargés.