有一个奇怪的 .csv 文件,例如:
header1,header2,header3
val11,val12,val13
val21,val22,val23
val31,val32,val33
Run Code Online (Sandbox Code Playgroud)
很好,但在这些行之后,总是有一个空行,后面跟着很多无用的行。整个东西是线:
header1,header2,header3
val11,val12,val13
val21,val22,val23
val31,val32,val33
dhjsakfjkldsa
fasdfggfhjhgsdfgds
gsdgffsdgfdgsdfgs
gsdfdgsg
Run Code Online (Sandbox Code Playgroud)
底部的行数完全随机,唯一的注释是它们之前的空行。
Pandas 有一个参数“skipfooter”,用于忽略页脚中已知的行数。
关于如何在不实际打开 (open()...) 文件并删除它们的情况下忽略这些行的任何想法?
没有任何选项可以read_csv通过获取第一个空行来终止函数。该模块无法根据所需条件接受/拒绝线路。它只能忽略空行(可选)或不符合数据形成形状的行(具有更多分隔符的行)。
您可以通过以下方法标准化数据(无需解析文件 - pure pandas):
了解所需\垃圾数据行的数量。[手动的]
pd.read_csv('file.csv', nrows=3)或者pd.read_csv('file.csv', skipfooter=4)
通过消除 中的其他数据来保留所需的数据DataFrame。[自动的]
df.dropna(axis=0, how='any', inplace=True)
结果将是:
header1 header2 header3
0 val11 val12 val13
1 val21 val22 val23
2 val31 val32 val33
Run Code Online (Sandbox Code Playgroud)
如果您正在使用该csv模块,那么检测空行是相当简单的。
import csv
with open(filename, newline='') as f:
r = csv.reader(f)
for l in r:
if not l:
break
#Otherwise, process data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3684 次 |
| 最近记录: |