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

为什么重命名后我不能访问熊猫中的专栏?[重复]

闻人志
2023-03-14

如果我有一个数据帧并重命名了列,则无法用其新名称访问列。

示例说明:

import pandas as pd 
df = pd.DataFrame({'a':[1,2], 'b': [10,20]})
df
   a   b
0  1  10
1  2  20
df['a']
0    1
1    2

现在,如果我按照这里建议的方式重命名列“a”。

df.columns.values[0] = 'newname'
df
   newname   b
0        1  10
1        2  20

现在,让我们尝试使用“newname”访问该列

 df['newname']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/gpfs0/export/opt/anaconda-2.3.0/lib/python2.7/site-packages/pandas/core/frame.py", line 1797, in __getitem__
    return self._getitem_column(key)
  File "/gpfs0/export/opt/anaconda-2.3.0/lib/python2.7/site-packages/pandas/core/frame.py", line 1804, in _getitem_column
    return self._get_item_cache(key)
  File "/gpfs0/export/opt/anaconda-2.3.0/lib/python2.7/site-packages/pandas/core/generic.py", line 1084, in _get_item_cache
    values = self._data.get(item)
  File "/gpfs0/export/opt/anaconda-2.3.0/lib/python2.7/site-packages/pandas/core/internals.py", line 2851, in get
    loc = self.items.get_loc(item)
  File "/gpfs0/export/opt/anaconda-2.3.0/lib/python2.7/site-packages/pandas/core/index.py", line 1572, in get_loc
    return self._engine.get_loc(_values_from_object(key))
  File "pandas/index.pyx", line 134, in pandas.index.IndexEngine.get_loc (pandas/index.c:3824)
  File "pandas/index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas/index.c:3704)
  File "pandas/hashtable.pyx", line 686, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12280)
  File "pandas/hashtable.pyx", line 694, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12231)
KeyError: 'newname'

但我仍然可以使用旧名称访问该列。

df['a']
0    1
1    2
Name: a, dtype: int64

似乎我已经更改了列的名义名称,但这种更改并没有传播到数据帧结构中用于区分列的字典中。

问:为什么会发生这种行为,我如何修复它?

共有1个答案

万俟飞语
2023-03-14

您可以使用以下方法:

In [131]: df.columns = ['newname'] + df.columns.tolist()[1:]

In [132]: df
Out[132]:
   newname   b
0        1  10
1        2  20

或:

In [136]: df = df.rename(columns={df.columns.tolist()[0]:'newname'})

In [137]: df
Out[137]:
   newname   b
0        1  10
1        2  20
 类似资料:
  • 问题内容: 我有一个名为的数据框。如何重命名唯一的一列标题?例如到? 问题答案: data.rename(columns={‘gdp’:’log(gdp)’}, inplace=True) 在它接受一个字典作为一个PARAM演出,所以你只是传递一个字典一次入境。

  • 我有一个单一的CSV文件,在其中我想重命名一些列相同的名称。我的初始代码如下所示 我用这段代码从dataframe中提取了选定的列 此切片每隔三列获取一次。现在我想用相同的名称重命名每三列一次,但这样重命名我的列会出错 有没有办法在pandas中重命名多个同名列? 除了手动操作,还有其他建议吗?

  • 我在Java中使用嵌套类时遇到问题,有人知道为什么Java不允许我这样做吗?

  • 我从一个有静态方法的类(B)扩展了一个类(a),然后在另一个类(C)中,我创建了一个类(a)的实例,并且我能够访问类B的静态方法。为什么会这样? A类: B类: C类:

  • 问题内容: 我在df中有几列相同的名称。需要重命名它们。无论如何,通常的重命名都会重命名,我可以将下面的blah重命名为blah1,blah4,blah5吗? 在[7]中: 问题答案: 我希望在Pandas中找到比通用Python解决方案更多的解决方案。如果Column的get_loc()函数找到带有“ True”值的重复项,则该掩码数组将返回掩码数组,“ True”值指向找到重复项的位置。然后,

  • 我遇到了一个大问题,其中有一个函数无法访问react中组件的道具: 但是当我把它改成一个胖箭头函数时,它工作得很好 这是为什么呢?我有什么不明白的?