【问题标题】:I'm getting an error in the following program as KeyError Traceback (most recent call last)我在以下程序中遇到错误,因为 KeyError Traceback(最近一次调用最后一次)
【发布时间】:2021-05-02 14:24:16
【问题描述】:

这是我的代码-

import pandas as pd

df5=pd.read_csv(r'C:\Anaconda3\airtravel.csv')

print(df5)

   Month   "1958"   "1959"   "1960"
0    JAN      340      360      417
1    FEB      318      342      391
2    MAR      362      406      419
3    APR      348      396      461
4    MAY      363      420      472
5    JUN      435      472      535
6    JUL      491      548      622
7    AUG      505      559      606
8    SEP      404      463      508
9    OCT      359      407      461
10   NOV      310      362      390
11   DEC      337      405      432

但是当我尝试访问这个时:-

print(df5['1960'])

我收到一个错误。

KeyError: '1960'

我不明白为什么会这样。 文件链接:https://people.sc.fsu.edu/~jburkardt/data/csv/csv.html

谢谢

【问题讨论】:

  • df5.columns 看看列名是什么,但是,根据您的示例数据,它看起来应该是df5[' "1960"']

标签: python pandas dataframe csv data-science


【解决方案1】:

您的列包含引用以及列名。也许df5['"1960"'] 会起作用

【讨论】:

    【解决方案2】:

    我已经检查过这个文件。我们这里有两个问题。列名开头有空格,年份之间有“”。

    可能的解决方案:

    • 放一个参数'skipinialspace'。它将删除空格和引号。然后你就可以随意打印了:

       df5 = pd.read_csv(r'C:\Anaconda3\airtravel.csv', skipinitialspace=True)
       print(df5['1960']) 
      
    • 去掉两边的空格,名字后面加“”:

      df5 = pd.read_csv(r'C:\Anaconda3\airtravel.csv')
      df5.columns = [x.strip() for x in df5.columns]
      print(df5['"1960"'])
      
    • 保持原样并在开头添加空格:

      df5 = pd.read_csv(r'C:\Anaconda3\airtravel.csv')
      print(df5[' "1960"'])
      

    【讨论】:

    • 非常感谢。这样可行。我还从原始文件中删除了空格,并能够将其打印为 df5['1960']。所以我猜 print(df5['1960']) 只有在没有空格的情况下才会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 2020-03-24
    相关资源
    最近更新 更多