index python pandas reverse

python - index - La forma correcta de revertir pandas.DataFrame?



python pandas dataframe index (2)

Aquí está mi código:

import pandas as pd data = pd.DataFrame({''Odd'':[1,3,5,6,7,9], ''Even'':[0,2,4,6,8,10]}) for i in reversed(data): print(data[''Odd''], data[''Even''])

Cuando ejecuto este código, aparece el siguiente error:

Traceback (most recent call last): File "C:/Python33/lib/site-packages/pandas/core/generic.py", line 665, in _get_item_cache return cache[item] KeyError: 5 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:/Users/*****/Documents/******/********/****.py", line 5, in <module> for i in reversed(data): File "C:/Python33/lib/site-packages/pandas/core/frame.py", line 2003, in __getitem__ return self._get_item_cache(key) File "C:/Python33/lib/site-packages/pandas/core/generic.py", line 667, in _get_item_cache values = self._data.get(item) File "C:/Python33/lib/site-packages/pandas/core/internals.py", line 1656, in get _, block = self._find_block(item) File "C:/Python33/lib/site-packages/pandas/core/internals.py", line 1936, in _find_block self._check_have(item) File "C:/Python33/lib/site-packages/pandas/core/internals.py", line 1943, in _check_have raise KeyError(''no item named %s'' % com.pprint_thing(item)) KeyError: ''no item named 5''

¿Por qué recibo este error?
¿Cómo puedo arreglar eso?
¿Cuál es la forma correcta de revertir pandas.DataFrame ?


Puedes hacerlo incluso de una manera más simple:

YourData[::-1]


data.reindex(index=data.index[::-1])

o simplemente:

data.iloc[::-1]

invertirá su marco de datos, si desea tener un bucle for que vaya de abajo hacia arriba, puede hacer:

for idx in reversed(data.index): print(idx, data.loc[idx, ''Even''], data.loc[idx, ''Odd''])

o

for idx in reversed(data.index): print(idx, data.Even[idx], data.Odd[idx])

Está recibiendo un error porque se reversed primeros data.__len__() llamada data.__len__() que devuelve 6. Luego, intenta llamar a los data[j - 1] para j en el range(6, 0, -1) , y la primera llamada sería data[5] ; pero en pandas data data[5] significa columna 5, y no hay columna 5 por lo que lanzará una excepción. (ver docs )