1

私は50〜60個のcsvファイルのバッチを持っており、何らかの理由で、各ファイルの最初の4行の合計ジャンクデータがあります。ただし、ジャンクデータの後には、列ヘッダーが適切にリストされ、ファイルの残りの部分は問題ありません。Pythonでこれらの最初の4つのファイルの各ファイルを削除するにはどうすればよいですか?これまでの私のコードは次のとおりです。

import csv
total = open('C:\\Csv\\201.csv', 'rb')
for row in csv.reader(total):
    print row

ご覧のとおり、ファイルを開いてその内容を印刷するだけです。csvファイルの特定の側面を削除する解決策を探しましたが、ほとんどの場合、列全体を削除するか、削除する行の特定の条件に依存します。私の場合、それは単に順序の問題であり、すべてのファイルから最初の4行を取り除く必要があります。ありとあらゆる助けを大いに感謝します。

4

7 に答える 7

7

あなたができること:

reader = csv.reader(total)
all(next(reader) for i in range(4))

また

for i in range(4): next(reader)
于 2013-02-23T19:50:52.117 に答える
3
for i, line in enumerate(sys.stdin, -4):
    if i>=0: print line,
于 2013-02-23T19:42:25.853 に答える
1

任意のシーケンスの最初のn項目をスキップするジェネリック関数を作成できます。

def skip_first(seq, n):
    for i,item in enumerate(seq):
        if i >= n:
            yield item

それを使用するには:

import csv
with open('C:\\Csv\\201.csv', 'rb') as total:
    csvreader = csv.reader(total)
    for row in skip_first(csvreader, 4):
        print row

この関数は、ファイルだけでなく、任意のシーケンスをスキップできるため、汎用的です。

# Skip the first three
list = ['happy', 'grumpy', 'doc', 'sleepy', 'bashful', 'sneezy', 'dopey']
for item in skip_first(list, 3):
    print item
于 2013-02-23T20:46:08.077 に答える
0

ここでPythonの使い方を提案している人がいないことに驚いてisliceいます...

from itertools import islice
with open('somefile') as fin:
    csvin = islice(csv.reader(fin), 4, None, None)
    for row in csvin:
        pass

例:

>>> r = range(10); list(islice(r, 4, None, None))
[4, 5, 6, 7, 8, 9]
于 2013-02-23T22:12:20.993 に答える
0

必要なヘッダー行DictReaderを考慮に入れている回答はないようです。最初の行にフィールドのリスト以外のものが含まれていない限り、フィールドをDictReader認識せず、正しく解析されません。

また、csv.readerファイルのようなオブジェクトを想定しているためStringIO、一時バッファとして使用する必要がありました(深刻な問題ではなく、通常は約20行あります)。

with StringIO() as csvio:
    for i, line in enumerate(myfile.iter_lines()):
        if i < 5:
            continue
        else:
            csvio.write(line)

    reader = csv.DictReader(csvio)

すべてがメモリ内にある場合、バッファリングせずに最初のNを除くすべての行に対してファイルのようなオブジェクトを作成する方法のより良い提案をいただければ幸いです。

于 2016-02-19T21:52:35.993 に答える
0

skiprows読み取り関数を呼び出しているときに使用できるパラメーターについて誰も言及していないことに驚きました。

df = pd.read_csv('somefile.csv',skiprows=4)

ヘッダーを含む行がないかファイルをチェックし**skiprows**、値がkの場合、最初のk行を削除するように値を指定できます。

于 2020-06-01T17:21:42.923 に答える
0

これは、ファイルの最初の4行をスキップするために行うことです。

df = pd.read_csv("C:/Users//...",skiprows=4)
于 2021-02-02T13:36:54.150 に答える