Python 如何高效地将数据帧中的数据过滤并提取到阵列中
我有一个数据帧df_订单,如下所示:Python 如何高效地将数据帧中的数据过滤并提取到阵列中,python,pandas,Python,Pandas,我有一个数据帧df_订单,如下所示: Symbol action orderid qty status price AAPL buy 1232131 100 open 110.41 MSFT sell 8120472 200 open 83.42 MSFT sell 8120473 500 open 81.12 我想获取每
Symbol action orderid qty status price
AAPL buy 1232131 100 open 110.41
MSFT sell 8120472 200 open 83.42
MSFT sell 8120473 500 open 81.12
我想获取每行的orderid、数量、状态和价格,其中'Symbol'=='MSFT'和'Action'=='sell'并将它们放入一个数组中。期望输出为
[['MSFT','sell',8120472,200,'open',83.42],['MSFT','sell',8120473,200,'open',81.12]]
我不久前写了下面的代码,它可以工作,但效率不高。我每天需要运行这段代码至少5000万次,并且需要非常毫秒的计数
myarray = []
dfsells = df_orders[df_orders['Symbol'] == symbol]
if len(dfsells.index) > 0:
dfsells = dfsells[dfsells['action'] == 'Sell']
dfsells = dfsells.reset_index(drop=True)
if len(dfsells.index) > 0:
for j in range(0,len(dfsells.index)):
orderid = dfsells.loc[j,'orderid']
sellqty = dfsells.loc[j,'qty']
status = dfsells.loc[j,'status']
price = round(float(dfsells.loc[j,'price']),2)
myarray.append([symbol,'sell',orderid,sellqty,status,price])
获取此阵列的最快方法是什么
df[(df['Symbol'] == symbol) & (df['action'] == 'Sell')].values.tolist()
测试用例(在笔记本中):
输出:
Wall time: 68.6 ms
99781
我想这花了
68.6ms
太快了。你可以只写df.loc[(df.Symbol='MSFT'| df.Action='sell,[你喜欢的功能列表]。值
Wall time: 68.6 ms
99781