【发布时间】:2013-12-24 23:54:12
【问题描述】:
这是我的代码:
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的正确方法是什么?
【问题讨论】:
-
您在寻找什么输出?
"One"不是data中的列,我不知道Two是变量还是"Two"的错字,这也不是列。您只是想颠倒列顺序吗? -
您的意思是
data[["Odd", "Even"]],或者更笼统地说,data[data.columns[::-1]]? -
你还没有给出你想要的输出示例。我知道如何解决
reversed(data)不起作用的事实,但我不知道您为什么要为框架中的每一列打印整个Odd和Even列,这就是您的如果你使用reversed(list(data)),代码就可以了。 -
我想从我的dataFrame末尾开始for循环
-
那么我认为你的问题是this one 的重复,你想要
for i, row in data[::-1].iterrows(): print row["Odd"], row["Even"]之类的东西。请始终在您的问题中举例说明您期望的输出;它让每个人的生活都变得更轻松。