Python Pandas: pivot_table cae silenciosamente los índices con nans

¿Hay alguna opción para no descartar los índices con ‘nan’ en ellos? Pienso que si se caen silenciosamente estas filas del pivote, en algún momento causará un dolor grave a alguien.

import pandas import numpy a = [['a', 'b', 12, 12, 12], ['a', numpy.nan, 12.3, 233., 12], ['b', 'a', 123.23, 123, 1], ['a', 'b', 1, 1, 1.]] df = pandas.DataFrame(a, columns=['a', 'b', 'c', 'd', 'e']) df_pivot = df.pivot_table(rows=['a', 'b'], values=['c', 'd', 'e'], aggfunc=sum) print(df) print(df_pivot) 

Salida:

  abcde 0 ab 12.00 12 12 1 a NaN 12.30 233 12 2 ba 123.23 123 1 3 ab 1.00 1 1 cde abab 13.00 13 13 ba 123.23 123 1 

Actualmente esto no es compatible, vea este problema para la mejora: https://github.com/pydata/pandas/issues/3729 .

Solución para llenar el índice con un dummy, pivote y reemplazo

 In [28]: df = df.reset_index() In [29]: df['b'] = df['b'].fillna('dummy') In [30]: df['dummy'] = np.nan In [31]: df Out[31]: abcde dummy 0 ab 12.00 12 12 NaN 1 a dummy 12.30 233 12 NaN 2 ba 123.23 123 1 NaN 3 ab 1.00 1 1 NaN In [32]: df.pivot_table(rows=['a', 'b'], values=['c', 'd', 'e'], aggfunc=sum) Out[32]: cde abab 13.00 13 13 dummy 12.30 233 12 ba 123.23 123 1 In [33]: df.pivot_table(rows=['a', 'b'], values=['c', 'd', 'e'], aggfunc=sum).reset_index().replace('dummy',np.nan).set_index(['a','b']) Out[33]: cde abab 13.00 13 13 NaN 12.30 233 12 ba 123.23 123 1