LoginSignup
2
2

More than 3 years have passed since last update.

pythonで複数のフォーマットCSVファイルから見出しを削除する

Last updated at Posted at 2020-04-06

はじめに

  • 大量のcsvファイルの見出し数行を全て削除したい
  • 使ってるのはJupyter Notebook

事前準備:

  • 本ファイルはをカレントディレクトリにおく
  • カレントディレクトリにあるMachine11_trdフォルダにヘッダー処理したいcsvファイルを入れておく。
import csv, os

#処理したいフォルダのパスを作成 (1)参照先
csv_folder_path = os.path.join(".","InputFolder")

#アウトプット先のフォルダのパスを作成 (2)保存先
headerRemoved_path = os.path.join(csv_folder_path,"headerRemoved")

#ヘッダー削除したファイルを入れる新規フォルダを作成する。
os.makedirs(headerRemoved_path, exist_ok=True)

#カレントディレクトリ以下にある指定フォルダの全ファイルをループする
#指定フォルダ内のファイル名リストを取り出す
for csv_filename in os.listdir(csv_folder_path):
    if not csv_filename.endswith(".csv"):
        continue #csvファイルでなければスキップする
    #print("見出し削除中"+ csv_filename + "...")

    #CSVファイルから一行ずつ読み込む(最初の行をスキップする)
    csv_rows=[]
    csv_file_obj = open(os.path.join(csv_folder_path, csv_filename))
    reader_obj = csv.reader(csv_file_obj)

    for row in reader_obj:
        #一行目または二行目のときは追加しない, そのほかは追加する (3)ヘッダー条件
        if reader_obj.line_num == 1 or reader_obj.line_num == 2:
            continue #対象行をスキップする
        csv_rows.append(row)
    csv_file_obj.close()

    #CSVファイルを指定フォルダ内に書き出す
    csv_file_obj = open(os.path.join(headerRemoved_path, csv_filename),"w",newline="")
    csv_writer = csv.writer(csv_file_obj)

    for row in csv_rows:
        csv_writer.writerow(row)
    csv_file_obj.close() 

やってること

  • 一行目と二行目をスキップしてすべての行をcsv_rows[]に保存する(必要に応じて変える)
  • カレントディレクトリ内に新しく作るheaderRemoveフォルダに新しくCSVファイルを作成し書き出す
  • これらを対象フォルダにある全てのCSVで行う。

考察

  • はじめdataframでやろうとしたが、カラム数が違うものはうまく読み込むことができなかったので、一行ずつリストを読み込み、リストからdataframe型に変換した。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2