回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个数据框“dfSummary”-</p>
<pre><code>exchangeBalances = [['ETHBTC','binance',10], ['LTCBTC','binance',10], ['XRPBTC','binance',10], ['ETHBTC','bitfinex',10], ['LTCBTC','bitfinex',10], ['XRPBTC','bitfinex',10]]
bidOffers = [
['ETHBTC','binance', 0.0035, 0.0351, datetime(2018, 9, 1, 8, 15)], ['LTCBTC','binance',0.009,0.092, datetime(2018, 9, 1, 8, 15)], ['XRPBTC','binance',0.000077, 0.000078, datetime(2018, 9, 1, 8, 15)], ['ETHBTC','bitfinex', 0.003522, 0.0353, datetime(2018, 9, 1, 8, 15)], ['LTCBTC','bitfinex',0.0093,0.095, datetime(2018, 9, 1, 8, 15)], ['XRPBTC','bitfinex',0.000083, 0.000085, datetime(2018, 9, 1, 8, 15)],
['ETHBTC','binance', 0.0035, 0.0351, datetime(2018, 9, 1, 8, 30)], ['LTCBTC','binance',0.009,0.092, datetime(2018, 9, 1, 8, 30)], ['XRPBTC','binance',0.000077, 0.000078, datetime(2018, 9, 1, 8, 30)], ['ETHBTC','bitfinex', 0.003522, 0.0353, datetime(2018, 9, 1, 8, 30)], ['LTCBTC','bitfinex',0.0093,0.095, datetime(2018, 9, 1, 8, 30)], ['XRPBTC','bitfinex',0.000083, 0.000085, datetime(2018, 9, 1, 8, 30)],
['ETHBTC','binance', 0.0035, 0.0351, datetime(2018, 9, 1, 8, 45)], ['LTCBTC','binance',0.009,0.092, datetime(2018, 9, 1, 8, 45)], ['XRPBTC','binance',0.000077, 0.000078, datetime(2018, 9, 1, 8, 45)], ['ETHBTC','bitfinex', 0.003522, 0.0353, datetime(2018, 9, 1, 8, 45)], ['LTCBTC','bitfinex',0.0093,0.095, datetime(2018, 9, 1, 8, 45)], ['XRPBTC','bitfinex',0.000083, 0.000085, datetime(2018, 9, 1, 8, 45)]
]
dfExchangeBalances = pd.DataFrame(exchangeBalances, columns=['symbol','exchange','balance'])
dfBidOffers = pd.DataFrame(bidOffers, columns=['symbol','exchange','bid', 'offer', 'created'])
dfBidOffers["spread"] = dfBidOffers["bid"] - dfBidOffers["offer"]
dfSummary = dfExchangeBalances.merge(dfBidOffers, how='left', on=['symbol','exchange'])
</code></pre>
<p>我需要完成的是,在“dfSummary”中添加一个<strong>计算字段</strong>:</p>
^{pr2}$
<p><strong>“someOtherRow”</strong>是基于“created”的<strong>查找</strong>(例如,最后一行具有相同的{symbol,exchange},但在30分钟前“created”(与“currentRow”相比)</p>
<p><strong>澄清</strong>:上面的例子是手头实际问题的<strong>简化</strong>。间隔时间不是15分钟。事实上,我需要在DataFrame中查找相应的记录(同一个key={symbol,exchange}),但是第一个这样的记录是在第一个月、第一个季度和第一年创建的。在</p>
<p>我尽量避免手动循环数据帧.iter使用Pandas内置的查找(矢量化)</p>
<p>我在想DataFrame。<strong>查找</strong>
<a href="https://stackoverflow.com/questions/13893227/vectorized-look-up-of-values-in-pandas-dataframe">Vectorized look-up of values in Pandas dataframe</a>
但不知道如何从<strong>计算字段的上下文中使用它。。。?另外,我希望对相同的数据帧进行查找,而不是针对<strong>不同的</strong>数据帧进行查找</p>
<p>提前谢谢!在</p>
<p>矢量化(熊猫和Numpy-vs循环):<br/>
<a href="https://engineering.upside.com/a-beginners-guide-to-optimizing-pandas-code-for-speed-c09ef2c6a4d6" rel="nofollow noreferrer">https://engineering.upside.com/a-beginners-guide-to-optimizing-pandas-code-for-speed-c09ef2c6a4d6</a><br/>
<a href="https://www.datascience.com/blog/straightening-loops-how-to-vectorize-data-aggregation-with-pandas-and-numpy/" rel="nofollow noreferrer">https://www.datascience.com/blog/straightening-loops-how-to-vectorize-data-aggregation-with-pandas-and-numpy/</a>
<a href="https://realpython.com/numpy-array-programming/" rel="nofollow noreferrer">https://realpython.com/numpy-array-programming/</a></p>