如何在从csv读取时检测和删除数据集上方的行?

2024-04-27 04:12:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv,看起来像这样:

name: john
date modified: 2018-09
from: jane
colum1 column2 column3
data    data    data 

在从csv读取表格数据之前,我是否可以应用任何函数在表格数据开始之前删除任何行?当前,当我读入column上面的行时,它们看起来像奇怪的字符。你知道吗

新表应如下所示:

colum1 column2 column3
data    data    data 

Tags: csv数据函数namefromdatadatecolumn
2条回答
with open('test.csv') as f:
    reader=csv.reader(f)
    counter=0
    for row in reader:
        if(''.join(row).startswith('colum1')):
            starting_row=counter # get the valid row programatically
        counter+=1
        break
pd.read_csv('test.csv',skiprows=starting_row) # skip previous rows

我会这样做:

from io import StringIO
with open('filename.csv') as f:
    lines = f.readlines()
s = StringIO(''.join((l for l in lines if ':' not in l)))
pd.read_csv(s)

或者:

with open('filename.csv') as f:
    lines = f.readlines()
skip_rows_idx = [i for i, l in enumerate(lines) if ':' in l]
pd.read_csv('filename.csv', skiprows=skip_rows_idx)

如果标头中没有冒号,则可以修改上面的代码(第一个示例)以删除第一行,如下所示:

import itertools
s = StringIO(''.join(itertools.dropwhile(lambda l: ':' in l, lines)))

(假设在标题之后没有“坏”行)。你知道吗

相关问题 更多 >