【问题标题】:Pandas cannot load the proper column of the CSV FilePandas 无法加载 CSV 文件的正确列
【发布时间】:2020-07-08 12:50:59
【问题描述】:

我在导入 CSV 文件的特定列时遇到了一些问题。我需要导入数据集的经度和纬度列(图:1)。

但在 spyder 中,变量资源管理器显示了错误的变量值(图:2)。似乎我预期的值列显示在索引列中。我该如何解决这个问题/如何导入它?

但是,当我单击变量浏览器窗口下方的调整大小按钮时,索引列会展开并显示类似于图 3 的内容

我正在使用的代码:

import pandas as pd
import numpy as np


dataset = pd.read_csv('dataset.csv',error_bad_lines=False)
X=dataset.loc[:,['latitude','longitude']]

【问题讨论】:

  • 为什么要设置 error_bad_lines=False?另外,您是否检查过数据中的所有行都具有相同数量的元素(即列)?在我看来,你可能有一些不匹配。您可以尝试的检查是仅导入前 3 列并查看它们是否被正确读取:read_csv('dataset.csv', usecols=[0:3])
  • Used 'error_bad_lines=False' 因为我一直收到此错误:“错误标记数据。C 错误:预期第 8 行中有 62 个字段,看到 65”您的代码说语法错误:X= pd.read_csv('dataset.csv', usecols = [0:3]) ^ SyntaxError: invalid syntax
  • 得到了解决方案。重命名列名和BOOYAH!

标签: python pandas csv import


【解决方案1】:

当您设置 error_bad_lines=False 时,您是在告诉 pandas 在发生错误时不要引发错误。相反,您之前的错误是告诉您到底出了什么问题:

 "Error tokenizing data. C error: Expected 62 fields in line 8, saw 65"

这意味着您的行中的字段多于标题的数量,当您告诉 pandas 不关心这一点时,这会导致错位。您应该清理您的数据,删除额外的列,或者使用标题仅导入一些特定的列,正如其他答案所建议的那样。

【讨论】:

    【解决方案2】:

    我建议制作一个列名数组,并尝试像这样读取 csv:

    colnames = ["latitude", "longitude",...]
    
    dataset = pd.read_csv('dataset.csv', names=colnames, index_col=0)
    # index_col = 0 makes a new index column
    
    # and if you must use error_bad_lines...
    dataset = pd.read_csv('dataset.csv', names=colnames, index_col=0, error_bad_lines=False)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-04
      • 2017-07-19
      • 1970-01-01
      • 2019-11-13
      • 2018-06-06
      • 1970-01-01
      • 2018-07-22
      • 2012-09-24
      相关资源
      最近更新 更多