<h3>一,。使用内部联接</h3>
<p>你可以先从<code>df</code>开始,然后再做第一个<code>groupby</code>。然后你每年获得最大票数,并根据年度票数组合合并,以获得每年获得最多票数的政党</p>
<pre class="lang-py prettyprint-override"><code># Original data
df = pd.DataFrame({'Election Yr.':[2000,2000,2000,2000,2000,2000,2005,2005,2005,2005,2005,2005],
'Party':['A','A','B','B','C','C','A','A','B','B','C','C',],
'Votes':[50,30,40,50,30,40,50,30,40,50,30,40]})
# Get number of votes per year-party
df = df.groupby(['Election Yr.','Party'])['Votes'].sum().reset_index()
# Get max number of votes per year
max_ = df.groupby('Election Yr.')['Votes'].max().reset_index()
# Merge on key
max_ = max_.merge(df, on=['Election Yr.','Votes'])
# Results
print(max_)
> Election Yr. Votes Party
> 0 2000 90 B
> 1 2005 90 B
</code></pre>
<h3>二,。排序和保留首次观察</h3>
<p>或者,您可以每年按投票进行排序:</p>
<pre class="lang-py prettyprint-override"><code>df = df.groupby(['Election Yr.','Party'])['Votes'].sum().reset_index()
df = df.sort_values(['Election Yr.','Votes'], ascending=False)
print(df.groupby('Election Yr.').first().reset_index())
print(df)
> Election Yr. Party Votes
> 0 2000 B 90
> 1 2005 B 90
</code></pre>