<h3><code>stack</code>+<code>concat</code>+<code>groupby</code>+<code>mean</code></h3>
<p>IIUC,您可以<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.stack.html" rel="nofollow noreferrer">^{<cd1>}</a>您的数据帧,和<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">^{<cd3>}</a>+<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy.mean.html" rel="nofollow noreferrer">^{<cd4>}</a>值。不需要<code>rolling</code></p>
<pre><code>f = df[['Visitor', 'Home']].stack().reset_index(drop=True)
s = df[['Visitor_rtg', 'Home_rtg']].stack().reset_index(drop=True)
pd.concat([f, s], axis=1).groupby(0)[1].mean()
</code></pre>
<p>输出</p>
<pre><code>Bucks 110.2
Celtics 100.7
Hornet 109.2
Pelicans 88.1
Sixers 86.3
Thunder 97.7
Warriors 105.6
Name: 1, dtype: float64
</code></pre>
<hr/>
<h3>编辑答案</h3>
<p>要获得所需的输出,可以使用<code>expanding</code>(不滚动)获得平均值,并使用<code>transform</code>广播回每个原始行。最后,只需<code>reshape</code>您的<code>dataframe</code>的底层值即可获得最终输出</p>
<pre><code>df2 = pd.concat([f, s], axis=1)
df2[1] = df2.groupby(0).transform(lambda s: s.expanding().mean())
pd.DataFrame(df2.values.reshape(-1,4), columns=df.columns)
Visitor Home Visitor_rtg Home_rtg
0 Sixers 83.4 Celtics 100.7
1 Thunder 97.7 Warriors 105.6
2 Bucks 110.2 Hornets 109.2
3 Pelicans 88.1 Sixers 86.3
4 Hornets 99.65 Wizards 102.3
</code></pre>