<p>有很多方法可以做到这一点,使用<code>groupby</code>。这应该是做这件事最有效的方法之一。你知道吗</p>
<pre><code>df.set_index('Location', inplace=True) # set the index
df['Weighted_Sum'] = (df.Parm1 * df.Weight) # calculated weighted sum
v = df[['Weighted_Sum', 'Weight']].sum(level=0) # groupby + sum
df['Weighted Ave'] = v['Weighted_Sum'] / v['Weight'] # calculate the mean
del df['Weighted_Sum'] # drop the surrogate column
</code></pre>
<p/>
<pre><code>df
Test# Type Parm1 Weight Weighted Ave
Location
M36 Test1 A 1.39 233.0 1.434275
M36 Test2 B 1.44 281.0 1.434275
M36 Test3 B 1.40 239.0 1.434275
M36 Test4 A 1.49 438.0 1.434275
M36 Test5 C 0.99 112.0 1.434275
M36 Test6 C 1.74 200.0 1.434275
M36 Test7 A 1.17 100.0 1.434275
M36 Test8 A 2.40 7.8 1.434275
M37 Test1 B 2.91 232.0 4.495933
M37 Test2 A 20.20 0.0 4.495933
M37 Test3 C 4.88 958.0 4.495933
M37 Test4 A 9.46 0.0 4.495933
</code></pre>
<p>要以您的格式获取<code>Weighted Ave</code>列,请使用<code>mask</code>-</p>
<pre><code>df['Weighted Ave'] = df['Weighted Ave'].mask(df['Weighted Ave'].duplicated(), '')
</code></pre>