<p>似乎您正在为被乘数的每一侧定义<code>sales</code>。因此,将第二部分定义为<code>m</code>(并命名索引的级别)。你知道吗</p>
<pre><code>In [28]: m = pd.DataFrame([[2008, 'sat', 0], [2008, 'sun', 1], [2009, 'sat', 2], [2009, 'sun', 3]],columns=['year','day','value']).set_index(['year','day'])
In [29]: m
Out[29]:
value
year day
2008 sat 0
sun 1
2009 sat 2
sun 3
[4 rows x 1 columns]
</code></pre>
<p>简单合并</p>
<pre><code>In [30]: x = pd.merge(sales.reset_index(),m.reset_index(),on=['year','day'])
</code></pre>
<p>套</p>
<pre><code>In [31]: x['sales_value'] = x['sales']*x['value']
</code></pre>
<p>重置索引</p>
<pre><code>In [32]: x.set_index(['year','flavour','day'])
Out[32]:
sales value sales_value
year flavour day
2008 strawberry sat 10 0 0
banana sat 22 0 0
strawberry sun 12 1 12
banana sun 23 1 23
2009 strawberry sat 11 2 22
banana sat 23 2 46
strawberry sun 13 3 39
banana sun 24 3 72
[8 rows x 3 columns]
</code></pre>
<p>这项工作正在进行中,但仍然是一个悬而未决的问题。见<a href="https://github.com/pydata/pandas/issues/5645" rel="nofollow">here</a>。这个soln实际上只是将这个soln嵌入广播数字中(例如mul/add…)。你知道吗</p>