<p>您可以使用<code>set_index</code>和<code>unstack</code>:</p>
<pre><code>df = pd.DataFrame(data)
df.set_index(['year','country']).unstack('year')
</code></pre>
<p>收益率</p>
<pre><code> rep sales
year 2013 2014 2015 2016 2013 2014 2015 2016
country
fr None kyle claire None NaN 10.0 20.0 NaN
uk kyle None None john 12.0 NaN NaN 10.0
usa None None None john NaN NaN NaN 21.0
</code></pre>
<p>或者,将<code>pivot_table</code>与<code>aggfunc='first'</code>一起使用:</p>
<pre><code>df.pivot_table(index='country', columns='year', values=['rep','sales'], aggfunc='first')
</code></pre>
<p>收益率</p>
<pre><code> rep sales
year 2013 2014 2015 2016 2013 2014 2015 2016
country
fr None kyle claire None None 10 20 None
uk kyle None None john 12 None None 10
usa None None None john None None None 21
</code></pre>
<p>对于<code>aggfunc='first'</code>,每个<code>(country, year, rep)</code>或<code>(country, year, sales)</code>
组通过获取找到的第一个值而聚合。在您的情况下,似乎没有重复项,因此第一个值与唯一的值相同。</p>