擅长:python、mysql、java
<p>这里有一个解决方案,通过定义一个自定义函数并将该函数应用于每个列。然后,您可以将每个列连接到一个数据帧中:</p>
<pre><code>def wavg(x, col):
return (x['weight']*(x[col]==5)).sum()/x['weight'].sum()
grouped = df.groupby('race')
pd.concat([grouped.apply(wavg,col) for col in df.columns if col.startswith('Question')],axis=1)\
.rename(columns = {num:f'Question_{num+1}' for num in range(3)})
</code></pre>
<p>输出:</p>
^{pr2}$