<p>此代码的工作逻辑如下:</p>
<p><strong>沿着<code>row in df1</code>进行迭代,并在<code>df2.iloc[0].iloc[coln.index(j)]</code>的帮助下更新<code>i-th row</code>,<br/>
其中,<br/>
coln=列表(df2.列);df2的列,我们将在未来的迭代匹配中使用它。<br/>
coln.指数(j);给出j的指数,其中<code>j</code>是年<br/>
.</strong></p>
<p>有用的代码就在这一部分。剩下的我用来从头开始制作<code>dataframe</code>:</p>
<pre><code>coln = list(df2.columns)
for i,j in zip(range(18),df1['year']):
df1['pricedata1'][i] = df1['pricedata1'][i]*df2.iloc[0].iloc[coln.index(j)]
df1['pricedata2'][i] = df1['pricedata2'][i]*df2.iloc[1].iloc[coln.index(j)]
print(df1)
</code></pre>
<hr/>
<h2>完整代码:</h2>
<pre><code>import pandas as pd
days_2006 = pd.Series(
pd.date_range("2006-01-02", periods=14, freq="D")
)
days_2007 = pd.Series(
pd.date_range("2007-01-02", periods=4, freq="D")
)
days_total = pd.concat([days_2006, days_2007], ignore_index=True)
df1 = pd.DataFrame(
data= {
'date': days_total,
'year':days_total.dt.year,
'pricedata1': [100.5]*18,
'pricedata2': [56.5]*18
},
)
df2 = pd.DataFrame(
data={
'pricename':['pricedata1', 'pricedata2'],
2006:[2.5, 3.0],
2007:[5.0, 6.0]
}
)
coln = list(df2.columns)
for i,j in zip(range(18),df1['year']):
df1['pricedata1'][i] = df1['pricedata1'][i]*df2.iloc[0].iloc[coln.index(j)]
df1['pricedata2'][i] = df1['pricedata2'][i]*df2.iloc[1].iloc[coln.index(j)]
print(df1)
</code></pre>