我正在使用 beautifulsoup 和 pandas 的组合来尝试通过遍历 boxscore 页面来获取运动参考数据,获取每个团队的数据帧并将它们连接在一起。我注意到表格在每一页上的格式化方式,有行分隔符将启动器与保留区分开,并且此行分隔器在“启动器”列中具有值“保留”(我稍后将其重命名为“玩家名称”) ,其余列标题重复其其余值。当此数据输入数据帧时,行分隔符将作为普通行引入。我想添加一个单独的列,其中包含该玩家是否开始游戏的 Y/N 值,并删除“Starters”列等于“Reserves”的所有记录。
我尝试添加一列,但我正在努力使用一种方法来获取前 x 行的默认值是“Y”,其余行的默认值为“N”。
这是一个简短的表格示例,后面是我正在使用的代码。如果您有任何想法,请告诉我!
编辑:我可能过度简化了这一点,因为实际上有两个标题列,并且在尝试所提供的解决方案时似乎这会导致问题。如何删除仅说明“基本框得分统计”和“高级框得分统计”的第一个标题列?
Basic Box Score Stats Advanced Box Score Stats
Starters MP FG +/- xyz%
Player1 20:00 17 5 12
Player2 15:00 8 4 10
Player3 10:00 9 3 8
Player4 9:00 3 2 6
Player5 8:00 1 1 4
Reserves MP FG +/- xyz%
Player4 7:00 1 1 2
Player5 4:00 1 1 2
Player6 3:30 1 1 2
import pandas as pd
from bs4 import BeautifulSoup
#performed steps in bs4 to get the links to individual boxscores
for boxscore_link in boxscore_links:
basketball_ref_dfs=pd.read_html(MainURL + boxscore_link)
if len(basketball_ref_dfs) = 4:
away_team_stats = pd.concat([basketball_ref_dfs[0],basketball_ref_dfs[1]])
home_team_stats = pd.concat([basketball_ref_dfs[2],basketball_ref_dfs[3]])
else:
away_team_stats = basketball_ref_dfs[0]
home_team_stats = basketball_ref_dfs[1]
#new code to be added here to fix 'reserve' row header for away/home_team_stats
full_game_stats = pd.concat([away_team_stats,home_team_stats])
full_season_stats = full_season_stats.append(full_game_stats,ignore_index=True)
full_season_stats
#what I want:
away_team_stats['Starter']='Y' # + some condition to only set this value for the first x occurrences or set to 'Y' until row value equals Reserve, then set remaining to 'N'