http://www.keipy53.esy.es/2015/01/24/getbaseballdata.html
を参考に、npbサイトから野球選手のデータを取得しています。
今回、全チームのデータを一度に取得したく考え、teamListを作成し、for文で回しているのですが
25 columns Passed ,passed data had 24 columns
と出てしまい、上手く動きません
columns_name に一つ項目を付け加えたことが原因だと思うのですが、
re_dataにもカラム数に合わせて、項目を増やすことは出来るのでしょうか
python
1# -*- coding: utf-8 -*- 2import re 3import urllib.request, urllib.error 4from bs4 import BeautifulSoup 5from pandas import DataFrame 6import numpy as np 7import pandas as pd 8 9opener = urllib.request.build_opener() 10years = [2011,2012,2013,2014,2015] 11teamList = ["h","bs","f","m","l","e","g","t","c","d","db","s"] 12batting_data = DataFrame() 13for year in years : 14 for team in teamList : 15 url="http://bis.npb.or.jp/"+str(year)+"/stats/idb1_"+team+".html" 16 html = opener.open(url).read() 17 shtml = html.decode('Shift-JIS','replace') 18 soup = BeautifulSoup(shtml) 19 data = soup.findAll("tr", attrs={"class":"ststats"}) 20 re_tag = re.compile(r'<tr.*?>|</tr>|<br/>|</td>|<td class="stplayer">|\n') 21 re_data = [re_tag.sub("", str(d)).split("<td>") for d in data] 22 23 columns_name = ["Team","Year","Name","G","PA","AB","R","H","2B","3B","HR","TB","RBI","SB","CS","SAC","SF","BB","IBB","HBP","SO","GIDP","AVG","SLG","OBP"] 24 _batting_data=DataFrame(re_data, columns = columns_name) 25 _batting_data.Year=year 26 _batting_data.Team = team 27 batting_data= pd.concat([batting_data, _batting_data], axis=0) 28batting_data.to_csv('data/batting_bs.csv')
エラーに出ている通り、データには24カラムしか無いので、整合性がおかしいと言われています。足りない1カラムをどのように埋めたいのか、その点についてヒントいただけると回答できるかも知れません。
回答1件
あなたの回答
tips
プレビュー