Правильный способ обратить панды вспять.Фрейм данных?
вот мой код:
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'])
когда я запускаю этот код, я получаю следующую ошибку:
Traceback (most recent call last):
File "C:Python33libsite-packagespandascoregeneric.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:Python33libsite-packagespandascoreframe.py", line 2003, in __getitem__
return self._get_item_cache(key)
File "C:Python33libsite-packagespandascoregeneric.py", line 667, in _get_item_cache
values = self._data.get(item)
File "C:Python33libsite-packagespandascoreinternals.py", line 1656, in get
_, block = self._find_block(item)
File "C:Python33libsite-packagespandascoreinternals.py", line 1936, in _find_block
self._check_have(item)
File "C:Python33libsite-packagespandascoreinternals.py", line 1943, in _check_have
raise KeyError('no item named %s' % com.pprint_thing(item))
KeyError: 'no item named 5'
почему я получаю эту ошибку?
Как я могу это исправить?
Что такое правильный способ обратного pandas.DataFrame?
2 ответов:
data.reindex(index=data.index[::-1])или просто:
data.iloc[::-1]перевернет ваш фрейм данных, если вы хотите иметь
forцикл, который идет снизу вверх, вы можете сделать:for idx in reversed(data.index): print(idx, data.loc[idx, 'Even'], data.loc[idx, 'Odd'])или
for idx in reversed(data.index): print(idx, data.Even[idx], data.Odd[idx])вы получаете сообщение об ошибке, потому что
reversedпервые звонкиdata.__len__()который возвращает 6. Затем он пытается вызватьdata[j - 1]наjнаrange(6, 0, -1), и первый звонок будетdata[5]; но в панд dataframedata[5]означает столбец 5, и нет столбца 5, поэтому он будет бросать исключение. ( см. docs)
Comments