<p>您可以通过按行应用<code>df1</code>来实现这一点:</p>
<pre class="lang-py prettyprint-override"><code>def multiply(row):
year = df1['year'].loc[row.name]
for pricedata in row.index:
row[pricedata] = df2[str(year)].loc[pricedata] * row[pricedata]
return row
df1[['pricedata1', 'pricedata2']].apply(multiply, axis=1)
</code></pre>
<p>中波</p>
<pre class="lang-py prettyprint-override"><code>import sys
import pandas as pd
from io import StringIO
TESTDATA = StringIO("""year pricedata1 pricedata2
2016 100.5 56.5
2017 100.5 56.5
""")
df1 = pd.read_csv(TESTDATA, delim_whitespace=True)
TESTDATA = StringIO("""pricename 2016 2017
pricedata1 2.5 5
pricedata2 3.0 6
""")
df2 = pd.read_csv(TESTDATA, delim_whitespace=True)
df2 = df2.set_index('pricename')
def multiply(row):
year = df1['year'].loc[row.name]
for pricedata in row.index:
row[pricedata] = df2[str(year)].loc[pricedata] * row[pricedata]
return row
df1[['pricedata1', 'pricedata2']] = df1[['pricedata1', 'pricedata2']].apply(multiply, axis=1)
</code></pre>
<pre><code># print(df1)
year pricedata1 pricedata2
0 2016 251.25 169.5
1 2017 502.50 339.0
</code></pre>