这是我的代码:
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:\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'
为什么我会收到此错误? 我该如何解决? 什么是正确的反转方法pandas.DataFrame?
pandas.DataFrame
data.reindex(index=data.index[::-1])
或者简单地说:
data.iloc[::-1]
将反转您的数据框,如果您想要一个for从下到上的循环,您可以这样做:
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。然后它尝试调用in data[j - 1],第一次调用将是; 但在熊猫数据框中表示第 5 列,并且没有第 5 列,因此它会引发异常。(见文档)j``range(6, 0, -1)``data[5]``data[5]
reversed
data.__len__()
data[j - 1]
j``range(6, 0, -1)``data[5]``data[5]