回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>下面是一本大字典的样本</p>
<pre><code> data ={'StudentId':['AAdams','AAdams','AAdams','AAdams','AAdams','AAdams',
'BBrooks','BBrooks','BBrooks','BBrooks','BBrooks',],
'year':[2015,2015,2015,2015,2015,2015,2015,2015,2015,2016,2016],
'month':[11,11,11,11,12,12,12,12,12,1,1],
'day':[15,16,21,23,1,2,15,18,30,5,7],
'BookLevel':[1.5,1.5,1.2,1.4,1.7,1.8,3.2,3.1,3.8,3.3,3.4]}
</code></pre>
<p>我想删除每个学生第一个月的最大值。如果有第二次出现,我想保留它</p>
<p>我使用了groupby by StudentId、year和month并计算了
图书级别。在</p>
<p>然后我做了另一个数据帧来计算每个学生每月的最大值,并合并了两个数据帧</p>
<p>然后我得到了一个如下所示的数据帧:</p>
^{pr2}$
<p>我想去掉AAdams在第11个月出现的第一个1.5行,而BBrooks在第12个月的第3.8行</p>
<p>我可以用测向下降删除BookLevel Max等于BookLevel的行…但是它会在每个月为每个学生删除Max并删除
第一次和第二次,如果有两次。在</p>
<pre><code> StudentId year month BookLevel BookLevelMax
2 AAdams 2015 11 1.2 1.5
3 AAdams 2015 11 1.4 1.5
4 AAdams 2015 12 1.7 1.8
6 BBrooks 2015 12 3.2 3.8
7 BBrooks 2015 12 3.1 3.8
9 BBrooks 2016 1 3.3 3.4
</code></pre>
<p>我似乎找不到一种方法来只放弃第一次发生的事情,而只在第一个月内完成。具体来说,AAdams在第11个月的最大值为1.5。它发生在两种情况下。我想保留其中一行,但不保留另一行……我希望将行数保持在1.8以下,因为它发生在第二个月(以及其他学生在第一个月之后的几个月出现的情况)。希望这有道理。在</p>