表記の件でマージする方法を教えてください。
(デバックのコツという書籍が余りないようで、ここで質問させていただきました。)
コードは以下の通りです。
import pandas as pd import requests from bs4 import BeautifulSoup import openpyxl import xlwt import datetime import time import os import pprint from tqdm.notebook import tqdm as tqdm df_horse_results_sub = pd.DataFrame(index=[], columns=[]) horse_results_sub =[[],[],[]] race_results_ids = [] horse_results_ids = [] jocky_results_ids = [] trainer_results_ids = [] def scrape_race_results(race_id_list, pre_race_results={}): global horse_results_sub global df_horse_results_sub race_results = pre_race_results for race_id in tqdm(race_id_list): if race_id in race_results.keys(): continue try: url = "https://db.netkeiba.com/race/" + race_id race_results[race_id] = pd.read_html(url)[0] #print(url) response_sub = requests.get(url) response_sub.encoding = response_sub.apparent_encoding soup_sub = BeautifulSoup(response_sub.text, 'html.parser') trs3 = soup_sub.find_all(class_="txt_l") for each in trs3: try: Horse_results_link = each.find('a')['href'] if Horse_results_link[1:6] == "horse": race_results_ids.append(race_id) horse_results_ids.append(Horse_results_link[-11:-1]) if Horse_results_link[1:7] == "jockey": jocky_results_ids.append(Horse_results_link[-6:-1]) if Horse_results_link[1:8] == "trainer": trainer_results_ids.append(Horse_results_link[-6:-1]) horse_results_sub = [race_results_ids,horse_results_ids,jocky_results_ids,trainer_results_ids] horse_results_col = ["race_id","horse_id","jocky_id","trainer_id"] df_horse_results_sub = pd.DataFrame(horse_results_sub).T df_horse_results_sub.columns = horse_results_col except: continue # ここの表結合がうまくいかない。 race_results[race_id] = pd.concat([race_results[race_id], horse_results_sub]) time.sleep(1) except IndexError: continue except: break return race_results race_id_list = [] for place in range(1, 11, 1): for kai in range(1, 6, 1): for day in range(1, 9, 1): for r in range(1, 13, 1): for nen in range(2019, 2020 ,1): race_id = ( str(nen).zfill(4) + str(place).zfill(2) + str(kai).zfill(2) + str(day).zfill(2) + str(r).zfill(2) ) race_id_list.append(race_id) results = scrape_race_results(race_id_list) for key in results: results[key].index = [key] * len(results[key]) results = pd.concat([results[key] for key in results], sort=False) results.to_pickle('../all_results.pkl')
上記のコードでは、
race_results[race_id]のデータフレームにhorse_results_sub]のデータフレームをマージさせたいのですが、
race_results[race_id]のデータフレームが出力されてしまいます。
回答1件
あなたの回答
tips
プレビュー