[Python] 215 CSVファイルから必要部分を抽出する

下図のように、レース結果、レース名、レースラップ、列インデックスが混在しているCSVファイルからレース結果のみを抜き出しました。

データベース化のための前処理です。

ちなみにExcel初級者が1ファイル30秒の手作業で処理するとしたら、1日8時間労働、月稼働20日とした場合、約半年かかります。このコードなら12万ファイルが70秒です。

120000ファイル × 0.5分 / 60分 / 8時間 / 20日 = 6.25ヶ月

しかしコードを書く人よりも、我慢強く手作業に取り組む人の方が評価されたりするのですから、日本の組織というのはなかなかのもんです。

import glob
import pandas as pd
import csv

# 1986年から2021年のレースファイルから結果のみを抽出する。/年/競馬場コード/回/*.csv
for year in range(1986,2022):
    for f in glob.glob(f'/horse_racing/race/{year}/*/*/*.csv', recursive=True):
        file_new = f.split('race/')[0] + 'race_result/' + f.split('race/')[1]

        with open (f, mode="r", encoding="shift_jis") as f1:
            with open(file_new, mode="w", encoding="shift_jis") as f2:
                writer = csv.writer(f2)
                for i,row in enumerate(csv.reader(f1)):
                    # 行0の列インデックスは削除
                    if i != 0:
                        # 列0にラップ、ペースが含まれていればTrue
                        word = ['ラップ'in row[0],'ペース'in row[0]]
                        # どちらもFalseであれば列0から列20を書き込みする
                        if not any(word):
                            writer.writerow(row[0:21])