2016-03-24 18 views
0

.csvファイルがあり、使用可能な情報がない行/行を削除しようとしています。私は特定の列に値を持たない行を削除したい。私はちょっとプログラミングに新しいですし、私はこれを行う方法を見つけることができませんでした。これは可能ですか?特定の列に値がないときに.csvの行を削除する

特定の番号がなければ行を削除しようとしましたが、うまく動作しませんでした。ここ

f = open('C:myfile.csv', 'rb') 
lines = f.readlines() 
f.close() 

filename = 'myfile.csv' 

f = open(filename, 'wb') 
for line in lines: 
    if line != "1": 
     f.write(line) 

f.close() 

いくつかのサンプル行です:

0,593 0,250984 -20,523384 -25,406271 
0,594 0,250984   
0,595 0,250984   
0,596 0,250984   
0,597 0,250984 -15,793088 -21,286336 
0,598 0,250984   
0,599 0,908811   
0,6  0,893612   
0,601 0,784814 -12,130922 -11,825742 
0,602 0,909238   
0,603 0,25309  
0,604 0,38435  
0,605 0,602954 -8,316167 -3,43328 
0,606 0,642628   
0,607 0,39201  
0,608 0,384289   
0,609 0,251656 -11,825742 -5,874723 

だから私は、第3および第4の列には番号がない場合は、行を削除したいです。

+1

これはまだコーディングしてみましたか?あなたのコードを共有し、現在あなたのために働いていないものを説明できますか? – idjaw

+0

サンプル行をいくつか表示できますか? Python、サンプルPythonコード、および/またはリサーチであなたの質問にタグを付けましたか? –

+0

コメントにコードを入れないでください。質問を編集して追加してください。 – martineau

答えて

1

これを行うには、Pythonのcsvライブラリを使用できます。あなたの行のそれぞれが4列(あなたを持っているように見えます、

0,593 0,250984 -20,523384 -25,406271 
0,597 0,250984 -15,793088 -21,286336 
0,601 0,784814 -12,130922 -11,825742 
0,605 0,602954 -8,316167 -3,43328 
0,609 0,251656 -11,825742 -5,874723 

注:

あなたに含む output.csvファイルを与える
import csv 

with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output: 
    csv_output = csv.writer(f_output, delimiter = '\t') 

    for row in csv.reader(f_input, delimiter = '\t'): 
     if len(row[2]) and len(row[3]): 
      csv_output.writerow(row) 

:あなたのデータは、以下のスクリプトが動作するはずのように、タブ区切りのように見えますデータにはこれらの不足しているエントリのタブがあります)、これは単に長さをテストするだけでは不十分です4です。 2つのセルの内容をテストする必要があります。

+0

ありがとうございます! –

0
import csv 

fn_in = 'test.csv' 
fn_out = 'outfile.csv' 

with open(fn_in, 'r') as inp, open(fn_out, 'w') as out: 
    writer = csv.writer(out) 
    for row in csv.reader(inp): 
     if len(row)==4: 
      writer.writerow(row) 
+0

あなたの回答を他の人に役立てるためのコードを説明してください。 –

関連する問題