<p>您可以将<code>transform</code>与<code>loc</code>和<code>values</code>一起使用:</p>
<pre><code>>>> df["size2"] = df["size"].loc[df.groupby("adult")["weight"].transform("idxmax")].values
>>> df
adult size weight size2
0 False S 8 M
1 False S 10 M
2 False M 11 M
3 False M 1 M
4 False M 20 M
5 True L 14 L
6 True S 12 L
</code></pre>
<hr/>
<p>一步一步,我们首先找到合适的指标:</p>
^{pr2}$
<p>然后我们使用这些来索引<code>size</code>列中的<code>loc</code>:</p>
<pre><code>>>> df["size"].loc[df.groupby("adult")["weight"].transform("idxmax")]
4 M
4 M
4 M
4 M
4 M
5 L
5 L
Name: size, dtype: object
</code></pre>
<p>最后,我们使用<code>.values</code>,这样当我们试图赋值时,索引不会妨碍我们:</p>
<pre><code>>>> df["size"].loc[df.groupby("adult")["weight"].transform("idxmax")].values
array(['M', 'M', 'M', 'M', 'M', 'L', 'L'], dtype=object)
>>> df["size2"] = df["size"].loc[df.groupby("adult")["weight"].transform("idxmax")].values
>>> df
adult size weight size2
0 False S 8 M
1 False S 10 M
2 False M 11 M
3 False M 1 M
4 False M 20 M
5 True L 14 L
6 True S 12 L
</code></pre>