[Python] 274 CSVファイル完全一致検索の高速化検討

誕生年単位の馬名ファイルとCSVファイル内の馬名との完全一致検索を実行するコードです。[Python] 229にも似たようなコードを書いています。

実行時間が結構かかり、改善の余地ありです。C言語でモジュールを書いたらどれだけ早くなるか、試してみたいです。

import csv
import pandas as pd

<中略>

with open (file_new_pre, mode="r", encoding="shift_jis") as f3:
    with open (file_new, mode="a", encoding="shift_jis") as f4:
        writer = csv.writer(f4)

        for i,row in enumerate(csv.reader(f3)):
            if i != 0:
                if int(year) >=2001: # 満年齢
                    birthyear = int(year) - int(re.sub("\\D", "", row[4]))
                else: # 2000年以前は数え年
                    birthyear = int(year) - int(re.sub("\\D", "", row[4])) + 1

                # 誕生年馬名ファイル
                namefile = f'horse{birthyear}.csv'
                
                try:
                    df = pd.read_csv(namefile,encoding="shift_jis")
                except:
                    horseID = '198500000'
                else:
                    # 馬名ファイル各行の馬名とレースファイルの馬名が完全一致する場合にTrueとする配列を作成
                    b_array = df[df.columns[1]]==row[3]

                    # ブール値の配列として取り出しリスト化
                    b_array_v = b_array.values.tolist()

                    # Trueのインデックス値を取得
                    try:
                        i = b_array_v.index(True)
                    except: # 該当なし
                        horseID = '100000000'
                    else: # horseID取得
                        horseID = df.iloc[i,0]

                rows = row[0:22] + [horseID]
                writer.writerow(rows)

            else: # タイトル行(0行目)
                rows = row[0:22] + ['horseID']
                writer.writerow(rows)