error muy extraño aquí: Estoy usando pandas para combinar varios dataframes. Como parte de la fusión, tengo que llamar a reset_index varias veces. Pero cuando lo hago, se bloquea inesperadamente en el segundo o tercer uso de reset_index.bloqueos de pandas en DataFrame.reset_index()
Aquí hay código mínimo para reproducir el error:
import pandas
A = pandas.DataFrame({
'val' : ['aaaaa', 'acaca', 'ddddd', 'zzzzz'],
'extra' : range(10,14),
})
A = A.reset_index()
A = A.reset_index()
A = A.reset_index()
Aquí está la parte correspondiente del rastreo:
....
A = A.reset_index()
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 2393, in reset_index
new_obj.insert(0, name, _maybe_cast(self.index.values))
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 1787, in insert
self._data.insert(loc, column, value)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/internals.py", line 893, in insert
raise Exception('cannot insert %s, already exists' % item)
Exception: cannot insert level_0, already exists
Cualquier idea de lo que va mal aquí? ¿Cómo puedo solucionarlo?
pandas sólo se trata de establecer el nombre de la nueva columna (s) después reset_index si el índice de la trama original no tiene nombre o si los niveles MultiIndex no tienen nombre en el caso de un MultiIndex. A.index.name = 'index1'; A = A.reset_index(); A.index.name = "index2"; A = A.reset_index(); A.index.name = 'index3'; A = A.reset_index() ... puede ir uno –