正确的方法来反转pandas.DataFrame吗? [英] Right way to reverse pandas.DataFrame?

查看:146
本文介绍了正确的方法来反转pandas.DataFrame吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码:

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'])

运行此代码时,出现以下错误:

When I run this code, i get the following 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'

为什么会出现此错误?
我该如何解决?
反转pandas.DataFrame的正确方法是什么?

Why am I getting this error?
How can I fix that?
What is the right way to reverse pandas.DataFrame?

推荐答案

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

或简单地:

data.iloc[::-1]

将反转您的数据帧,如果您希望有一个for循环从上到下循环,您可以这样做:

will reverse your data frame, if you want to have a for loop which goes from down to up you may do:

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,所以您遇到错误.然后它尝试为range(6, 0, -1)中的j调用data[j - 1],第一个调用将是data[5];但是在熊猫中,数据帧data[5]表示第5列,并且没有第5列,因此它将引发异常. (请参见文档)

You are getting an error because reversed first calls data.__len__() which returns 6. Then it tries to call data[j - 1] for j in range(6, 0, -1), and the first call would be data[5]; but in pandas dataframe data[5] means column 5, and there is no column 5 so it will throw an exception. ( see docs )

这篇关于正确的方法来反转pandas.DataFrame吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆