当前位置: 首页 > 面试题库 >

正确的方法来反转pandas.DataFrame?

陈茂
2023-03-14
问题内容

这是我的代码:

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什么?


问题答案:
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]用于jrange(6, 0, -1)和第一个电话会data[5];
但在pandas数据框中data[5]表示第5列,而没有第5列,因此它将引发异常。(请参阅文档)



 类似资料:
  • 问题内容: 出于好奇,我试图找出哪一种是在PHP正则表达式模式中使用反斜杠的正确方法: 测试01:(3个反斜线) 测试02:(4个反斜线) 根据下面的文章,4应该是正确的方法,但令我困惑的是两个测试都返回了一个匹配项。如果两者都正确,那么4是首选方式吗? 问题答案: 事实是,您正在使用字符类,因此无论嵌入多少文字反斜杠都无关紧要,它将被视为单个反斜杠。 例如以下两个正则表达式: 就正则表达式引擎而

  • 我正在开发一个包含一个活动和多个片段的android应用程序。我的应用程序包含导航抽屉。它的布局包含listview。单击它的项目,我用ft.replace(R.id.my\u placehodler,new MyFragment())动态更改片段,并将事务添加到。当我每次实例化新片段时都进行新事务。在我看来,这不是一个好办法。你能给我一些关于进行片段事务的正确方法的建议吗?

  • 问题内容: 让我们开始考虑两种类型的相机旋转: 摄像机绕点旋转(轨道): 相机旋转目标(FPS) 然后是一个更新函数,其中从眼睛/目标/上摄像机矢量中计算出投影/视图矩阵: 当摄像机的视图方向与上轴平行(在此处为z-up)时,出现这些旋转功能的问题…在那时,摄像机的行为确实令人讨厌,因此我将遇到以下故障: 所以我的问题是,我该如何调整以上代码,使相机完整旋转,而最终结果在某些边缘点上看起来并不奇怪

  • 问题内容: 这可能是一个愚蠢的问题,但是我想使用Modernizr JS库检测一些浏览器属性,以确定要显示或不显示什么内容。 我有一个名为Pano2VR的应用程序,它可以同时输出HTML5和SWF。我需要用于iOS设备用户的HTML5。 但是,IE根本不呈现此“ HTML5”输出。看来他们的输出使用CSS3 3D变换和WebGL,IE9中显然不支持一种或多种。 因此,对于那些用户,我需要显示Fla

  • null 请解释这种行为? 是否有任何变通办法来反映基接口的方法从派生接口的类型?

  • 所以我有一个Java应用程序,它使用一个固定的线程池来执行一些代码。此代码包括使用输出到系统的第三方库。犯错误当我让这段代码执行单线程时,我“重定向”了系统。错误为最终打印到log4j日志的打印流。基本上是这样的: 这按预期工作。输出打印到日志文件而不是控制台,我可以通过更改log4j配置完全删除输出。完美。 当我开始添加多线程时,我做了一些研究,遇到了这样一个问题:在多线程Java程序中,每个线