当前位置: 首页 > 知识库问答 >
问题:

重命名数据帧列后的1.0

徐奇逸
2023-03-14

以下脚本:

import pandas as pd
import numpy as np
import math

A = pd.DataFrame(np.array([[1,2,3,4],[5,6,7,8]]))

Floor1 = math.floor(A.min()[1]/2)*2

names = np.array([ 0.   ,  0.635,  1.27 ,  1.905])

A.columns = names

Floor2 = math.floor(A.min()[1]/2)*2

Floor1正在正确执行,Floor2使用相同的df执行,但使用重命名的列则不正确。我得到一个关键错误:

Traceback (most recent call last):

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 2646, in get_loc
    return self._engine.get_loc(key)

  File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\hashtable_class_helper.pxi", line 385, in pandas._libs.hashtable.Float64HashTable.get_item

  File "pandas\_libs\hashtable_class_helper.pxi", line 392, in pandas._libs.hashtable.Float64HashTable.get_item

KeyError: 1.0


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "C:\Users\Desktop\Python\untitled0.py", line 13, in <module>
    Floor2 = math.floor(A.min()[1]/2)*2

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py", line 871, in __getitem__
    result = self.index.get_value(self, key)

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\numeric.py", line 449, in get_value
    loc = self.get_loc(k)

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\numeric.py", line 508, in get_loc
    return super().get_loc(key, method=method, tolerance=tolerance)

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 2648, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))

  File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\hashtable_class_helper.pxi", line 385, in pandas._libs.hashtable.Float64HashTable.get_item

  File "pandas\_libs\hashtable_class_helper.pxi", line 392, in pandas._libs.hashtable.Float64HashTable.get_item

KeyError: 1.0

我知道,有一个类似的问题:重命名列后get keyerror

但我并没有真正得到答案,更重要的是,我没有找到解决办法。

共有2个答案

王俊哲
2023-03-14

如果您使用A. min(),您将在默认情况下沿着列的ax=0中找到最小值。
更改列名时,您无法访问索引'1',因为没有名称为'1的索引在列中。

如果你的意图是在一行中找到最小值,你可以使用A. min(轴=1)。

你可以这样写代码。

import pandas as pd
import numpy as np
import math

A = pd.DataFrame(np.array([[1,2,3,4],[5,6,7,8]]))

Floor1 = math.floor(A.min(axis=1)[1]/2)*2

names = np.array([ 0.   ,  0.635,  1.27 ,  1.905])

A.columns = names

Floor2 = math.floor(A.min(axis=1)[1]/2)*2

非常感谢。

东博瀚
2023-03-14

在重命名之前,如果您使用列表(A.columns)获得列表的列,您将看到您将获得列表[0,1,2,3]。因此,可以使用键1进行索引。但是,重命名后,无法再使用键1编制索引,因为列名已更改。

 类似资料:
  • 我想将以下数据框的第1列重命名为“Ref”。我有很多列,因此无法重命名每个列或为每个列设置名称。 这是数据帧 现在我想将第一列重命名为'Ref'。我试过这个 它重命名所有标题与列[1]相似的列。

  • 我正在用PySpark DataFrames分析一些数据。假设我有一个正在聚合的数据帧< code>df: 这将给我: 聚合工作得很好,但我不喜欢新的列名。有没有办法将此列重命名为人类可以从方法中读取的内容?也许更类似于中的操作:

  • 我有麻烦重命名基于csv的数据帧的标头。 我得到了以下数据帧:df1: 现在我想根据csv文件更改列名(第一行),如下所示: 因此,我期望数据帧如下所示: 有什么想法吗?感谢您的帮助:)

  • 有没有比调用多个帧更好的方法来同时为给定的 SparkSQL 添加前缀或重命名所有或多个列? 例如,如果我想检测更改(使用完全外连接)。然后我剩下两个具有相同结构的< code >数据帧。

  • 下面是一个简单的数据帧示例: 与输出 我想将其转置并重命名列: 因此,输出将是 转换方法不太好,那我该怎么办?

  • 本文向大家介绍如何重命名R语言数据帧中的单列,包括了如何重命名R语言数据帧中的单列的使用技巧和注意事项,需要的朋友参考一下 我们可以通过定义新名称来做到这一点,如下所示: 由于数据框中只有一列,因此使用对象名称就足够了。