pandasで計算
import pandas as pd url = 'https://baseball-data.com/stats/pitcher-all/era-1.html' dfs = pd.read_html(url, index_col=0) league = pd.DataFrame({ 'チーム': [ '広島', '阪神', 'DeNA', '巨人', '中日', 'ヤクルト', 'ソフトバンク', '西武', '楽天', 'オリックス', '日本ハム', 'ロッテ' ], 'リーグ': [ 'セントラル', 'セントラル', 'セントラル', 'セントラル', 'セントラル', 'セントラル', 'パシフィック', 'パシフィック', 'パシフィック', 'パシフィック', 'パシフィック', 'パシフィック' ] }) league df = pd.merge(dfs[0], league, on='チーム') df # 列名を置換 df.rename( columns={ 'セlブ': 'セーブ', 'ホlルド': 'ホールド' }, inplace=True) df # 小松式ドネーション計算 df['KD'] = ((df['投球回'] * 3) + (df['勝利'] + df['セーブ'] + df['ホールド']) * 10) * 1000 # セ・リーグ抽出 se_league = df[df['リーグ'] == 'セントラル'].copy() # パ・リーグ抽出 pa_league = df[df['リーグ'] == 'パシフィック'].copy() # チーム別集計 pv = df.pivot_table(values='KD', index='チーム', aggfunc=sum, fill_value=0) pv['順位'] = pv['KD'].rank(ascending=False, method='min') pv.sort_values('順位', inplace=True) team_rank = pv.reset_index().set_index('順位') team_rank # ランキング df['順位'] = df['KD'].rank(ascending=False, method='min') df.sort_values('順位', inplace=True) df.set_index('順位', inplace=True) df[df.index < 21] # セ・リーグ se_league['順位'] = se_league['KD'].rank(ascending=False, method='min') se_league.sort_values('順位', inplace=True) se_league.set_index('順位', inplace=True) se_league[se_league.index < 11] # パ・リーグ pa_league['順位'] = pa_league['KD'].rank(ascending=False, method='min') pa_league.sort_values('順位', inplace=True) pa_league.set_index('順位', inplace=True) pa_league[pa_league.index < 11]