希望添加一个列,将保持每场比赛的记录每场比赛的轨道。我有一个赛季专栏,上面写着过去几年的每个赛季和季后赛。你知道吗
array(['2012-13', '2013-14', '2014-15', '2015 Post', '2015-16',
'2016 Post', '2016-17', '2017 Post', '2013 Post', '2014 Post'], dtype=object)
我应该先使用groupby来分隔每个季节,还是不需要。我试着到处寻找一个类似的问题,但没有发现什么,所以我真的不知道如何处理这个问题。干杯!你知道吗
Date Visitor V_PTS Home H_PTS \
0 2012-10-30 19:00:00 Washington Wizards 84 Cleveland Cavaliers 94
1 2012-10-30 19:30:00 Dallas Mavericks 99 Los Angeles Lakers 91
2 2012-10-30 20:00:00 Boston Celtics 107 Miami Heat 120
3 2012-10-31 19:00:00 Dallas Mavericks 94 Utah Jazz 113
4 2012-10-31 19:00:00 San Antonio Spurs 99 New Orleans Pelicans 95
Attendance Arena Location Capacity \
0 20562 Quicken Loans Arena Cleveland, Ohio 20562
1 18997 Staples Center Los Angeles, California 18997
2 20296 American Airlines Arena Miami, Florida 19600
3 17634 Vivint Smart Home Arena Salt Lake City, Utah 18303
4 15358 Smoothie King Center New Orleans, Louisiana 16867
Yr Arena Opened Season H_Wins H_Losses V_Wins V_Losses
0 1994 2012-13 0 0 0 0
1 1992 2012-13 0 0 0 0
2 1999 2012-13 0 0 0 0
3 1991 2012-13 0 0 0 0
4 1999 2012-13 0 0 0 0
我知道这并不是最具python风格的方法,但到目前为止,我可以用这个代码来描述它是赢还是输
nba['Wins'] = np.where(nba['H_PTS']>nba['V_PTS'], 1, 0)
nba['Losses'] = np.where(nba['H_PTS']<nba['V_PTS'], 1, 0)
有没有办法让它添加到自己的基础上,在同一个季节的标签栏?你知道吗
这比看上去要复杂得多。我找到的解决方案肯定有简化的方法,但我会一步一步地把它列出来,这样就很清楚发生了什么。你知道吗
但首先值得花点时间问一下为什么这很棘手。它看起来像一个简单的
groupby()
问题,使用.cumsum()
来加总胜负。如果你只是想得到客队的结果,那就太好了。但你的问题是你想为球队赢得胜利,不管他们是客场还是主场。你知道吗为此,我建议将问题分成几个步骤(当您有一些有问题的代码时,这总是一件有用的事情)。你知道吗
主要答案
首先,将数据分为两个数据帧,一个用于客队,另一个用于主队:
一旦分离,我们对每个数据帧做两件事。首先,我们使用
np.where()
(顺便说一下,完全是pythonic)创建一个win
列。我想说只使用布尔值,但这并不能很好地处理.cumsum()
)。第二,我们重新命名索引,这样我们就不用讨论客队和主队,而是讨论球队。这很重要,因为现在我们要再次将这些数据帧合并为一个:我们可以把一个队的
loss
算作win
的简单倒数,然后我们按Date
排序,因为没有一个队可以同时打两场比赛,这应该没问题。然后我们将按Season
和Team
分组,因为这是您要计算结果的组。你知道吗现在很容易把胜负累加起来:
如果您想得到包括当前游戏在内的结果,可以使用
.cumsum()
。但是,由于您需要上一个游戏的结果,我们需要使用.shift()
,然后用0填充(现在为空)第一行。你知道吗但现在我们遇到了一个问题:主队和客队在不同的一排!为了解决这个问题,我们再次将它们拆分为单独的数据帧,并重命名这些列,以明确我们谈论的是访客记录还是家庭记录。你知道吗
最后一步是基于
Visitor
和Home
团队名称合并回主数据帧。你知道吗最后,我们可以(可选)生成您在注释中提到的那种
W-L
格式:完成!进一步简化它(这肯定可以做到)留给读者作为练习。你知道吗
所有代码都放在一个地方:
一个例子(和一些建议)
每当你有问题的时候,试着构造一个你想要的输入和输出的样本,其格式可以让回答者直接复制粘贴到他们的代码中。此示例应演示任务的关键要求。在你的例子中,这可能包括一支同时打主客场和多个赛季的球队。这是一个很有用的练习,甚至在你问问题之前——用基本用例构建一个测试平台可以很容易地检查你编写的代码是否按预期工作。你知道吗
我制作了一个包含这些特性的示例数据帧。请注意,我删除了与当前问题无关的列。你知道吗
在计算胜负(
df['losses'] = ...
)之后,您应该检查团队结果是否正确累积:最后,你会发现:
你可以仔细看看,以确保它符合你想要的。你知道吗
相关问题 更多 >
编程相关推荐