[Python] 243の続きです。
1着馬DBで1着同着の場合は2頭の名前を登録するようにしました。horseIDは先頭馬1頭のままです。
pandasのduplicatedメソッドを使いました。
これでレースの行が1行にまとまります。
同着レースの1着馬を置き換えたCSVファイルを1着馬DBとして登録します。
import pandas as pd
for year in range(1986,2021 +1):
filename = f'/horse_racing/race_winner/{year}_1着馬リスト.csv'
df = pd.read_csv(filename,encoding='shift_jis')
dup_rows = df.duplicated(['raceID'])
print(f'重複行 {dup_rows}')
dup_l = list()
for i,row in enumerate(dup_rows):
if row == True:
dup_l.append(i)
print(dup_l)
for num in dup_l:
rows = df.iloc[[num -1 ,num]]
row_l=rows.values.tolist()
# 馬名2頭分を作成
names = row_l[0][2] + ',' + row_l[1][2]
# 馬名2頭分に置き換え
df.iloc[num -1, 2] = names
# 置き換えの確認
rows2 = df.iloc[[num -1 ,num]]
row_l2=rows2.values.tolist()
print(row_l2)
# 重複行の削除
df_new = df.drop(df.index[[dup_l]])
# 新ファイル名を作成
filename_new = f'/horse_racing/race_winner/{year}_1着馬リスト_replace.csv'
with open(filename_new, 'w', newline='',encoding = 'shift_jis') as f:
df_new.to_csv(f,index=False)