我试图从.csv文件解析:
fail
但我总是最终得到这个错误:
planets = pd.read_csv("planets.csv", sep=',')
这就是我的csv文件的前几行:
ParserError: Error tokenizing data. C error: Expected 1 fields in line 13, saw 9
编辑:这是第13行:
# This file was produced by the test
# Tue Apr 3 06:03:27 2018
#
# COLUMN pl_hostname: Host Name
# COLUMN pl_discmethod: Discovery Method
# COLUMN pl_pnum: Number of Planets in System
# COLUMN pl_orbper: Orbital Period [days]
# COLUMN pl_orbsmax: Orbit Semi-Major Axis [AU])
# COLUMN st_dist: Distance [pc]
# COLUMN st_teff: Effective Temperature [K]
# COLUMN st_mass: Stellar Mass [Solar mass]
#
loc_rowid,pl_hostname,pl_discmethod,pl_pnum,pl_orbper,pl_orbsmax,st_dist,st_teff,st_mass
1,11 Com,Radial Velocity,1,326.03000000,1.290000,110.62,4742.00,2.70
2,11 UMi,Radial Velocity,1,516.22000000,1.540000,119.47,4340.00,1.80
3,14 And,Radial Velocity,1,185.84000000,0.830000,76.39,4813.00,2.20
4,14 Her,Radial Velocity,1,1773.40000000,2.770000,18.15,5311.00,0.90
5,16 Cyg B,Radial Velocity,1,798.50000000,1.681000,21.41,5674.00,0.99
6,18 Del,Radial Velocity,1,993.30000000,2.600000,73.10,4979.00,2.30
7,1RXS J160929.1-210524,Imaging,1,,330.000000,145.00,4060.00,0.85
编辑:感谢@Rakesh,跳过前12行解决了问题
planets = pd.read_csv(" planets.csv",sep =',',skiprows = 12)
答案 0 :(得分:1)
函数pandas.read_csv()
从第一行获取列数及其名称。默认情况下,它不会将第一行的选项视为注释。
发生的事情是pandas读取第一行,将其拆分并发现只有一列,将此分割的行插入第13行,即首先未注释的行。要解决此问题,可以使用参数comment
。
planets = pd.read_csv("planets.csv", comment='#')
与使用skiprows
相比,即使注释行数量不同,这也允许相同的代码加载planets.csv
文件。
答案 1 :(得分:0)
您似乎需要skiprows
。您可以跳过所有评论。
<强>实施例强>
planets = pd.read_csv("planets.csv", sep=',', skiprows=12)
答案 2 :(得分:0)
当我无法弄清楚错误的确切原因时,我已经开始工作了:
planets = pd.read_csv('planets.csv', sep=',', error_bad_lines=False)
答案 3 :(得分:0)
除了上面的答案,如果你只有第13行遇到问题,你可以跳过它。
pd.read_csv("plants.csv", skiprows = 12, header=None)
答案 4 :(得分:0)
我刚刚使用你提供的csv数据运行了以下代码,它运行没有问题。我在下面运行了以下内容
import pandas as pd
planets = pd.read_csv("planets.csv", sep=',')
print(planets)
话虽如此,可能会有一些问题。
首先,您可以将分隔符设置为嗅探sep=None
,让pandas找出分隔符是什么。你也可以设置headers=None
所以它看起来像:
pd.read_csv("planets.csv", sep=None, headers=None)
可能存在编码问题。您可以尝试将编码设置为其中一些值,以查看错误是否存在https://docs.python.org/3/library/codecs.html#standard-encodings