<p>您可以将<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html" rel="nofollow noreferrer">^{<cd1>}</a>与新的<code>MultIndex</code>数据帧一起使用,方法是对相同的新名称进行双<code>[]</code>和<code>rename</code>选择,这里<code>price</code>:</p>
<pre><code>df1 = (df.join(df[['sales']].rename(columns={'sales':'price'}) /
df[['volumns']].rename(columns={'volumns':'price'})))
</code></pre>
<p>另一个想法是通过<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.stack.html" rel="nofollow noreferrer">^{<cd6>}</a>和
<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.unstack.html" rel="nofollow noreferrer">^{<cd7>}</a>:</p>
<p>对于新列,请使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.assign.html" rel="nofollow noreferrer">^{<cd8>}</a>作为单行解决方案:</p>
<pre><code>df1 = df.stack().assign(price = lambda x: x['sales'] / x['volumns']).unstack()
</code></pre>
<p>与此选项相同的是:</p>
<pre><code>df1 = df.stack()
df1['price'] = df1['sales'] / df1['volumns']
df1 = df1.unstack()
</code></pre>
<p>从@Valdièu Bo借用数据:</p>
<pre><code>print (df1)
volumns sales price \
YTD2017 YTD2018 YTD2019 YTD2017 YTD2018 YTD2019 YTD2017 YTD2018
A 212.0 220.0 226.16 3654.04 4163.87 4695.12 17.236038 18.926682
B 17.5 18.5 18.57 234.84 274.47 298.90 13.419429 14.836216
C 18.5 14.5 12.66 213.02 191.14 177.46 11.514595 13.182069
YTD2019
A 20.760170
B 16.095854
C 14.017378
</code></pre>