<p>您可以使用<code>gt</code>运算符将数据帧拆分为所需的年份。创建一个新的数据帧,将所有唯一的<code>NOC</code>值作为索引,这样,下一步中任何不存在的值都将被考虑在内。对分割数据帧的每个部分使用<code>groupby</code>。然后,将<code>apply</code>与计算<code>Edition</code>的唯一值(<a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.value_counts.html" rel="nofollow noreferrer">^{<cd5>}</a>)的函数一起使用,并为每个<code>NOC</code>平均这些值</p>
<p>输入<em>sample.csv</em></p>
<pre><code> City Edition NOC Medal
Athens 1993 GRE Gold
Athens 1994 AUT Silver
Athens 1994 GRE Bronze
Athens 1994 GRE Gold
Athens 1994 GRE Silver
Athens 1997 GRE Silver
Athens 1998 HUN Gold
Athens 1998 AUT Silver
Athens 1998 GRE Bronze
Athens 1998 HUN Gold
Athens 1998 AUT Silver
Athens 1998 GRE Bronze
Athens 2001 GRE Gold
Athens 2002 GRE Silver
Athens 2003 HUN Gold
</code></pre>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
df = pd.read_csv('sample.csv', sep='\s+')
gt1996 = df['Edition'].gt(1996)
le1996 = ~gt1996
avg_medals = lambda x: x['Edition'].value_counts().mean()
dr = pd.DataFrame(index=df['NOC'].unique())
dr['Average Before 1996'] = df[le1996].groupby('NOC').apply(avg_medals)
dr['Average After 1996'] = df[gt1996].groupby('NOC').apply(avg_medals)
print(dr)
</code></pre>
<p><em>dr</em></p>
<pre><code> Average Before 1996 Average After 1996
GRE 2.0 1.25
AUT 1.0 2.00
HUN NaN 1.50
</code></pre>