如何仅使用特定行从csv文件创建数据帧



我有这个csv,它包含:

"""START
ABC
XYZ
START OF DATA
"COL1","COL2","COL3"
"1","2","3"
END OF DATA
LMN
NUMBER-OF-RECORDS=1
OPQ"""

我想要的数据帧看起来像:

COL1 COL2 COL3
1     2     3

基本上是包含在START OF DATA和END OF DATA之间的任何内容。

我试着做:df = pd.read_csv(file_name,header=4,skipfooter=4)这是可行的,但我不喜欢在页眉或页脚可能更改时对值进行编码的想法。我认为最好的方法是获取这两个关键字之间的数据,并将其放入数据帧中。我该怎么做?

如果事先不知道页眉和页脚的长度,则必须手动解析文件并找到包含关键字的行号。

这里有一种方法,从https://stackoverflow.com/a/3961374/9357244:

import pandas as pd  
filename = 'csv_w_hdr_ftr.csv'
with open(filename) as myFile:
for num, line in enumerate(myFile, 1): 
if 'START OF DATA' in line:
start_line = num 
elif 'END OF DATA' in line:
end_line = num
footer_len = num - end_line + 1
df = pd.read_csv(filename,header=start_line,skipfooter=footer_len)  

请注意,如果您可以控制csv文件的编写方式,如果在页眉/页脚行的开头添加注释字符,则可以使用read_csv中的comment参数跳过这些行(请参阅read_csv文档(。

相关内容

  • 没有找到相关文章

最新更新