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

数据帧索引:KeyError:[columns]中没有任何一列

宋成天
2023-03-14

我参加了datacamp的“数据科学的中间Python”。

>>> brics.loc[:]
          country     capital    area   population
BR         Brazil    Brasilia   8.516       200.40
RU         Russia      Moscow  17.100       143.50
IN          India   New Delhi   3.286      1252.00
CH          China     Beijing   9.597      1357.00
SA   South Africa    Pretoria   1.221        52.98
>>> brics.loc[:,['country','capital']]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/pandas/core/indexing.py", line 1294, in __getitem__
    return self._getitem_tuple(key)
  File "/usr/local/lib/python3.5/dist-packages/pandas/core/indexing.py", line 789, in _getitem_tuple
    self._has_valid_tuple(tup)
  File "/usr/local/lib/python3.5/dist-packages/pandas/core/indexing.py", line 142, in _has_valid_tuple
    if not self._has_valid_type(k, i):
  File "/usr/local/lib/python3.5/dist-packages/pandas/core/indexing.py", line 1379, in _has_valid_type
    (key, self.obj._get_axis_name(axis)))
    KeyError: "None of [['country', 'capital']] are in the [columns]"

这是教科书索引,它在昨晚起作用,但今天不行。

>>> brics.iloc[1,1]
' Moscow'
>>> brics.iloc[1,2]
17.100000000000001

好像我唯一失败的函数是loc();iloc()选择得很好。错误消息来自pandas,因此我重新安装了pip3;它没有帮助,apt得到了更新升级等,没有改变。

看起来由于某种原因,熊猫没有在loc方法中正确解析我的字符串。

共有1个答案

乐正烨熠
2023-03-14

在这里,我使用.loc编写了简单的代码,您可以看到下面的代码

import pandas as pd
df = pd.DataFrame({'num_legs': [2, 4, 8, 0],'num_wings': [2, 0, 0, 0],'num_specimen_seen': [10, 2, 1, 8]},index=['falcon', 'dog', 'spider', 'fish'])
print(df.loc[:, 'num_legs':'num_wings'])

这在我的情况下有效,你可以试试这个

 类似资料:
  • 我有两个形状相同的python数据帧,例如: 我想使用df2中的值作为行索引来选择df1中的值,并创建一个形状相等的新数据帧。预期结果: 我已尝试使用.loc,它在单个列中运行良好: 但是我不能同时在所有列上使用. loc或. iloc。我想避免循环来优化性能,因为我正在处理一个大数据帧。有什么想法吗?

  • 问题内容: 我正在尝试将csv文件中的数据读取到pandas数据框中,并访问第一列“日期” 产生以下结果 如果我尝试访问“打开”或“音量”之类的任何其他列,则它按预期运行 问题答案: 您很可能在文件的开头有一个额外的字符,该字符位于您的第一列名称之前。只需将您的输出复制/粘贴到非Unicode控制台生成。

  • 有人能解释为什么“路易斯维尔”会返回一个键错误吗?据我所知,这是在数据框架内。我错过了什么? 下面是数据的样子。这是一个CSV。 这就是关闭数据的内容。head()看起来像 off_data.index代码 Rajith Thennakoon的建议 输入 KeyError Traceback(最近的调用最后)~\Anaconda3\lib\site-包\熊猫\核心\索引\base.py在get_l

  • 我正在尝试从多索引数据帧中仅使用一个索引来创建新的数据帧。 理想情况下,我想要这样的东西: 和: 基本上,我想删除除level之外的多索引的所有其他索引。有没有一个简单的方法可以做到这一点?

  • 我是Python的新手 我想在pandas数据帧中找到某个值的索引(比如说),因为这是列的起始位置。(列上方的行数未知,数据不相关,左侧的“列”为空。) 据我所知,isin方法只返回值是否存在的布尔值,而不是其索引。 如何找到该值的索引?

  • 我得到了一个具有多个列和行的数据帧df1。简单的例子: 我想创建一个空的数据框df2,然后再添加新的列和计算结果。 此时,我的代码如下所示: …添加两个新列: 有没有更好/更安全/更快的方法?是否可以创建一个空数据帧df2,并且只从df1复制索引?