<p>对于select <code>False</code>,值被<code>~</code>用在旋转掩码中,将<code>Year</code>的值转换为索引并除以聚合<code>sum</code>:</p>
<pre><code>print (df3)
Year Foreign Player Player
0 2000 False 26
1 2000 True 2
2 2001 False 21
3 2001 True 5
4 2002 False 20
4 2002 True 10
</code></pre>
<hr/>
<pre><code>df4 = (df3[~df3['Foreign Player']].set_index('Year')['Player'] /
df3.groupby('Year')['Player'].sum()).mul(100).reset_index(name='Percent Foreign')
print (df4)
Year Percent Foreign
0 2000 92.857143
1 2001 80.769231
2 2002 66.666667
</code></pre>
<p>另一个想法是通过<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.unstack.html" rel="nofollow noreferrer">^{<cd6>}</a>改变<code>df2</code>:</p>
<pre><code>df22 = df.groupby(['Year','Foreign Player'])['Player'].count().unstack()
print (df22)
Foreign Player False True
Year
2000 26 2
2001 21 5
2002 20 10
</code></pre>
<p>然后将<code>False</code>列除以两列之和:</p>
<pre><code>df4 = (df22[False] / df22.sum(axis=1)).mul(100).reset_index(name='Percent Foreign')
print (df4)
Year Percent Foreign
0 2000 92.857143
1 2001 80.769231
2 2002 66.666667
</code></pre>
<p>对于<code>True</code>的百分比:</p>
<pre><code>df5 = (df22[True] / df22.sum(axis=1)).reset_index(name='Percent Foreign')
</code></pre>