<p>一个简洁的解决方案是<a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reindex.html" rel="nofollow noreferrer"><strong>^{<cd1>}</strong></a>你的<code>df2</code>在<code>df1</code>上。首先重塑<code>df2</code>以匹配<code>df1</code>(年份作为行,价格名称作为列),然后<code>reindex()</code>并按元素乘以比例因子</p>
<p><strong>注意:</strong>这取决于两个索引具有相同的数据类型,因此根据需要转换<code>year.astype(...)</code></p>
<pre><code>df2 = df2.set_index('pricename').T.reindex(df1.year)
df1.pricedata1 = df1.pricedata1 * df2.pricedata1.values
df1.pricedata2 = df1.pricedata2 * df2.pricedata2.values
# date year pricedata1 pricedata2
# 2006-01-02 2006 251.25 169.5
# 2006-01-03 2006 251.25 169.5
# 2006-01-04 2006 251.25 169.5
# 2006-01-05 2006 251.25 169.5
# 2006-01-06 2006 251.25 169.5
# 2006-01-07 2006 251.25 169.5
# 2006-01-08 2006 251.25 169.5
# 2006-01-09 2006 251.25 169.5
# 2006-01-10 2006 251.25 169.5
# 2006-01-11 2006 251.25 169.5
# 2006-01-12 2006 251.25 169.5
# 2006-01-13 2006 251.25 169.5
# 2006-01-14 2006 251.25 169.5
# 2006-01-15 2006 251.25 169.5
# 2007-01-02 2007 502.50 339.0
# 2007-01-03 2007 502.50 339.0
# 2007-01-04 2007 502.50 339.0
# 2007-01-05 2007 502.50 339.0
</code></pre>