<p>这可能不是最有效的方法,但对于每一行,您可以使用:</p>
<pre><code>data[row.opp_pty_cd][row.cur]
</code></pre>
<p>举个例子:</p>
<pre><code>>>> import pandas as pd
>>> data={'CME':{u'JPY': 0.525, u'USD': 3.305, u'CNH': 4.805},
... 'EUREX':{u'USD': 3.305, u'GBP': 1.545, u'EUR': 0.375},
... 'GOODM':{u'KRW': 0.0},
... 'HKEX':{u'USD': 3.395, u'HKD': 3.565, u'CNH': 4.895},
... 'KIS':{u'KRW': 0.0},
... 'NLFX':{u'USD': 3.305},
... 'OSE':{u'JPY': 0.615},
... 'SGX':{u'JPY': 0.725, u'USD': 2.605, u'SGD': 2.575, u'CNH': 5.005, u'CNY': 0.0},
... 'TOCN':{u'JPY': 0.525}}
>>> margins = pd.DataFrame([{'balance_date': '2019-06-24', 'opp_pty_cd': 'GOODM','cur': 'KRW', 'amt':9714190.0,'acct': 30}, {'balance_date': '2019-06-24', 'opp_pty_cd': 'KIS','cur': 'KRW', 'amt':1858386321.,'acct': 30}])
>>> margins
acct amt balance_date cur opp_pty_cd
0 30 9.714190e+06 2019-06-24 KRW GOODM
1 30 1.858386e+09 2019-06-24 KRW KIS
>>> for row in margins[['opp_pty_cd', 'cur']].itertuples():
... print(data[row.opp_pty_cd][row.cur])
...
0.0
0.0
</code></pre>
<p>如果将<code>data</code>转换为数据帧,可能有更好的方法。你知道吗</p>