添加DataFrame列默认值时,如何将其限制到特定行?

2024-09-28 03:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用beauthoulsoup和pandas的组合,尝试通过循环boxscore页面获取体育参考数据,获取每个团队的数据帧并将它们连接在一起。我注意到在每一页上表格的格式,有行分隔符将起始符和保留区分开,并且这个行分隔符在'Starter'列中有值“reserves”(我后来将其重命名为'Player_Name'),其余的列标题重复其馀的值。当此数据输入到dataframe中时,行分隔符作为普通行引入。我想添加一个单独的列,该列包含该玩家是否开始游戏的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
^{pr2}$

Tags: 数据box标题statsmp分数表格score
2条回答

你可以这样做,如果你已经知道你的“Reserve”值出现的索引,假设它出现在第10条记录中。我最初将所有内容设置为“N”,然后将前10行设置为“Y”。在

away_team_stats['Starter'] = 'N'
away_team_stats.loc[:9, 'Starter'] = 'Y'


或者您可以: ^{pr2}$

这将显示第一次出现索引“Reserve”的位置。在

现在可以按上述方式执行:

away_team_stats.loc[:idx, 'Starter'] = 'Y'
away_team_stats.loc[idx+1:, 'Starter'] = 'N'

将前几行设置为“Y”,直到单词“Reserve”第一次出现,然后将其余行设置为“N”。在

您可以通过三个步骤完成此操作:

  1. 使用away_team_stats['Starter']='N'为整个列设置默认值“N”
  2. 使用iloc方法和away_team_stats.iloc[:x, 2]='Y'将前x行的值设置为“Y” (我相信如果将“Starter”列附加到示例数据后,它将位于第2位,但您可能需要编辑它)
  3. 通过使用带'Player_Name' == 'Reserves'loc方法删除带有'Player_Name' == 'Reserves'的行

iloc方法将按数字索引/列对数据帧进行切片,loc方法将按索引/列标签对数据帧进行切片

https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html

相关问题 更多 >

    热门问题