擅长:python、mysql、java
<p><strong>关于问题1:</strong>熊猫.itertuples()为每行生成一个<a href="https://docs.python.org/2/library/collections.html#collections.namedtuple" rel="nofollow noreferrer">^{<cd1>}</a>。您可以像标准元组一样解压缩这些元素,也可以按名称访问元组元素:</p>
<pre><code>for t in transactions.itertuples(index=False):
for m in market.itertuples(index=False):
if t.i_symbol == m.symbol and t.acceptance_date == m.date:
print(m.symbol + m.date + m.close)
</code></pre>
<p>(我没有用你这种大小的数据帧测试这个,但我很确定它仍然非常慢)</p>
<p><strong>关于问题2:</strong>您可以简单地<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html" rel="nofollow noreferrer">^{<cd2>}</a>符号和日期上的数据帧。你知道吗</p>
<p>重命名“transactions”数据框,使其也包含名为“symbol”和“date”的列:</p>
<pre><code>transactions = transactions[['i_symbol', 'acceptance_date']]
transactions.columns = ['symbol','date']
</code></pre>
<p>然后合并符号和日期上的两个数据帧:</p>
<pre><code>result = pd.merge(market, transactions, on=['symbol','date'])
</code></pre>
<p>结果数据帧由两个数据帧中存在的每个符号/日期组合的一行组成。操作只需要几秒钟在我的机器上与你的大小的数据帧。你知道吗</p>