ValueError: Longitud de la falta de coincidencia: se Espera eje tiene 0 elementos, mientras que la creación jerárquica columnas en pandas dataframe

Yo estaba pasando por la documentación acerca de la jerarquía de la indexación de los Pandas. Traté de probar los ejemplos de ella para crear un vacío dataframe con jerárquica de indexación:

In [5]: df = pd.DataFrame()

In [6]: df.columns = pd.MultiIndex(levels = [['first', 'second'], ['a', 'b']], labels = [[0, 0, 1, 1], [0, 1, 0, 1]])

Sin embargo, se produce un error:

ValueError                                Traceback (most recent call last)
<ipython-input-6-dd823f9b8d22> in <module>()
----> 1 df.columns = pd.MultiIndex(levels = [['first', 'second'], ['a', 'b']], labels = [[0, 0, 1, 1], [0, 1, 0, 1]])

/usr/local/lib/python3.4/dist-packages/pandas/core/generic.py in __setattr__(self, name, value)
   2755         try:
   2756             object.__getattribute__(self, name)
-> 2757             return object.__setattr__(self, name, value)
   2758         except AttributeError:
   2759             pass

pandas/src/properties.pyx in pandas.lib.AxisProperty.__set__ (pandas/lib.c:44873)()

/usr/local/lib/python3.4/dist-packages/pandas/core/generic.py in _set_axis(self, axis, labels)
    446 
    447     def _set_axis(self, axis, labels):
--> 448         self._data.set_axis(axis, labels)
    449         self._clear_item_cache()
    450 

/usr/local/lib/python3.4/dist-packages/pandas/core/internals.py in set_axis(self, axis, new_labels)
   2800             raise ValueError('Length mismatch: Expected axis has %d elements, '
   2801                              'new values have %d elements' %
-> 2802                              (old_len, new_len))
   2803 
   2804         self.axes[axis] = new_labels

ValueError: Length mismatch: Expected axis has 0 elements, new values have 4 elements

No veo ningún problema con mi código. Alguna idea de lo que está sucediendo?

InformationsquelleAutor Peaceful | 2017-04-03

1 Kommentar

  1. 10

    El problema es que tiene un vacío de la trama de datos que tiene cero columnas, y usted está tratando de asignar un cuatro columnas multi-índice; Si se crea un vacío de datos de marco de cuatro columnas inicialmente, el error se ha ido:

    df = pd.DataFrame(pd.np.empty((0, 4)))    
    df.columns = pd.MultiIndex(levels = [['first', 'second'], ['a', 'b']], labels = [[0, 0, 1, 1], [0, 1, 0, 1]])

    O puede crear vacíos del marco de datos con el multi-índice de la siguiente manera:

    multi_index = pd.MultiIndex(levels = [['first', 'second'], ['a', 'b']], labels = [[0, 0, 1, 1], [0, 1, 0, 1]])    
    df = pd.DataFrame(columns=multi_index)
    
    df
    #   first    second
    #  a    b   a     b
    • Gracias! Como un aparte, nunca he visto nada como pd.np.. Usted puede elaborar un poco sobre esto?
    • Eres bienvenido. pd.np es una forma abreviada de import numpy as np; np..., así que usted puede tener acceso a numpy funciones de la pandas.np módulo sin tener que importar numpy módulo de forma explícita.
    • Que hay de nuevo. Gracias!

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea