首页 > 解决方案 > 在没有循环的情况下迭代一列数组

问题描述

我的数据框如下所示:

           asks                                                        bids                                   lastUpdated   
0   [[0.09245, 1654], [0.09265000000000001, 506], ...   [[0.09148, 121], [0.09141, 183], [0.09134, 550...   2020-04-19 00:02:24.464     
1   [[0.09245, 1654], [0.09265000000000001, 506], ...   [[0.09148, 121], [0.09141, 183], [0.09134, 550...   2020-04-19 00:02:24.464     
2   [[0.09245, 1654], [0.09265000000000001, 506], ...   [[0.09148, 121], [0.09141, 183], [0.09134, 550...   2020-04-19 00:02:24.464     
3   [[0.09245, 1654], [0.09265000000000001, 506], ...   [[0.09148, 121], [0.09141, 183], [0.09134, 550...   2020-04-19 00:02:24.464

我需要的是创建一个midprice每行等于的列asks[0][0] + bids[0][0] / 2

关于如何在没有循环的情况下做到这一点的任何想法?像 lambda 函数?类似的东西:df.assign(midprice = lambda x: (x['bids'][0] + x['asks'][0]) * 0.5)

输出应该是如下所示的列:

midprice
0.091965
0.091965
0.091965
0.091965

谢谢!

标签: pythonpandas

解决方案


df = (df
      .assign(topBid = df.bids.apply(lambda bid: bid[0][0] if bid else np.nan))
      .assign(topAsk = df.asks.apply(lambda ask: ask[0][0] if ask else np.nan))
      .assign(midprice = lambda x: (x.topBid + x.topAsk) * 0.5))

推荐阅读