python Pandas读取CSV已分隔

xj3cbfub  于 2023-11-15  发布在  Python
关注(0)|答案(1)|浏览(139)

我有一个CSV文件,其结构如下:

Data Download information etc.
Header1   Header2   Header3   Header4    ...
A         B         C         D          ...
E         F         G         H          ...
I         J         K         L          ...
...       ...       ...       ...        ...

字符串
除了第一行,所有的标题和数据都已经被分隔成列。但是,我找不到一个方法来读取我的CSV文件。

[IN] df = pd.read_csv('path.csv', encoding='unicode_escape', skiprows=[1])

[OUT] pandas.errors.ParserError: Error tokenizing data. C error: Expected 6 fields in line 16, saw 7


总共有50列。第16行的数据与其他行没有什么不同。

[IN] df = pd.read_csv('path.csv', skiprows=[1])

[OUT] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 234375: invalid start byte


如果我使用skip_bad_lines,我会得到一个df作为输出,无论多么混乱,来自所有50列的数据都被压缩成5列,并且在每列中添加一个“;”作为“”。
有什么建议吗?

23c0lvtd

23c0lvtd1#

pd.read_csv('path.csv', encoding='unicode_escape', skiprows=[1])

字符串
跳过第二行。这使得第一行(Data Download information etc.)成为标题,并扰乱了列检测。
您应该使用:用途:

# skip 1 row
pd.read_csv('path.csv', encoding='unicode_escape', skiprows=1)


或者:

# skip the first row (0-based indexing)
pd.read_csv('path.csv', encoding='unicode_escape', skiprows=[0])


有关详细信息,请参阅read_csv文档中的skiprows参数:

skiprowsint,int或Callable的列表,可选

要跳过的行号(0-索引)或文件开头要跳过的行数(int)。
如果可调用,则可调用函数将根据行索引进行评估,如果应该跳过行,则返回True,否则返回False。有效的可调用参数的示例是lambda x: x in [0, 2]
输出量:

Header1   Header2   Header3   Header4 
0  A         B         C         D       
1  E         F         G         H       
2  I         J         K         L

相关问题