multiindex index columns column python pandas

python - columns - ¿Cómo creo pandas DataFrame(con index o multiindex) de la lista de instancias namedtuple?



pandas set index (1)

Para obtener una Serie de una ruta de nombre, puede usar el atributo _fields :

In [11]: pd.Series(a, a._fields) Out[11]: ticker GE date 2010-01-01 price 30 dtype: object

Del mismo modo, puede crear un DataFrame como este:

In [12]: df = pd.DataFrame(l, columns=l[0]._fields) In [13]: df Out[13]: ticker date price 0 GE 2010-01-01 30 1 GE 2010-01-02 31

Tienes que set_index después del hecho, pero puedes hacer esto en el inplace :

In [14]: df.set_index([''ticker'', ''date''], inplace=True) In [15]: df Out[15]: price ticker date GE 2010-01-01 30 2010-01-02 31

Ejemplo simple:

>>> from collections import namedtuple >>> import pandas >>> Price = namedtuple(''Price'', ''ticker date price'') >>> a = Price(''GE'', ''2010-01-01'', 30.00) >>> b = Price(''GE'', ''2010-01-02'', 31.00) >>> l = [a, b] >>> df = pandas.DataFrame.from_records(l, index=''ticker'') Traceback (most recent call last) ... KeyError: ''ticker''

Ejemplo más duro:

>>> df2 = pandas.DataFrame.from_records(l, index=[''ticker'', ''date'']) >>> df2 0 1 2 ticker GE 2010-01-01 30 date GE 2010-01-02 31

Ahora cree que [''ticker'', ''date''] es el índice en sí mismo, en lugar de las columnas que quiero usar como índice.

¿Hay alguna manera de hacer esto sin recurrir a un ndarray numpy intermedio o usar set_index después del hecho?