python - 导入 pandas df 时删除/忽略 .dat 的前两行
问题描述
我有以下代码,我试图在其中加载一个用逗号分隔数据的 df
df = pd.read_csv(r'C:\Users\jmwil\Downloads\data.dat',
header=None, sep=',', engine='python')
但是它会产生以下错误pandas.errors.ParserError: Expected 9 fields in line 3, saw 22
,因为数据有点像这样(下)本质上工作表中的前两行不属于表。我想找到一个解决方案,不需要我进入文件并删除我真正感兴趣的数据表上方的两行,因为有数千个。如何在没有前两行的情况下加载或让 python 删除 .dat 文件的前两行?我不能给出确切的数据,但我试图复制下面的问题。
xyz 2010, 209, 145
xyz 2010, 209, 145
date, amount, type, location, count, etc...., 22nd column
输入
1,2,3
4,5,6
A,B,C,D,E,F,H
1,1,1,1,1,1,1
2,2,2,2,2,2,2
3,3,3,3,3,3,3
df中的所需输出
A,B,C,D,E,F,H
1,1,1,1,1,1,1
2,2,2,2,2,2,2
3,3,3,3,3,3,3
解决方案
尽管@Quang Hong 推荐了skirows=2,但我仍然想发布这个答案,因为我认为它更有用一些。Pandas.read_csv 有选项 error_bad_lines,它基本上会跳过导致错误的每一行。像这样使用它:
df = pd.read_csv(r'C:\Users\jmwil\Downloads\data.dat',
header=None, sep=',', engine='python', error_bad_lines=False)
这适用于 .csv 文件,所以我想它也应该适用于 .dat 文件(如果我错了,请纠正我)
推荐阅读
- angular - 为什么升级到 Angular 7 Ecma6 不起作用?
- winapi - Win32 API TerminateProcess() 返回成功但进程没有被杀死
- c# - 单元测试中的 DeterministicTaskScheduler vs AsyncContext
- mysql - 在 Ubuntu 18.04 中启动 MySQL 社区服务器失败
- python - 在python中计算.wav文件的频谱图
- javascript - 将隐藏的溢出内容添加到新容器
- python - 从列表python中删除两个连续元素
- linux - 从文件中查找定义的数据并用作变量
- python - 具有多个网格规范和水平和垂直邻接的 Matplotlib 仪表板
- javascript - 在 Javascript 中处理价格和舍入