我有一个名为reassembly的大型列表,组织方式如下:
['HYDR', 30472.0, 'B'], ['HYDR', 30470.0, 'S'], ['HYDR', 30474.0, 'B'].....
我的一段代码:
sum_buys = 0
sum_sells = 0
for deal in reassembly:
ticker, vol, oper = deal[0], deal[1], deal[2]
if oper == "B":
sum_buys = sum_buys + vol
elif oper == "S":
sum_sells = sum_sells + vol
列表非常大。从头到尾运行大约需要 5 分钟。很久了。
熊猫图书馆可以帮助我更快地完成吗?我从来没有用过它。
我该怎么办?
将名为重组的列表转换为熊猫数据帧
使用 pandas 方法计算两个参数:sum_buys 和 sum_sells
请帮帮我!
是的,您可以并且应该将列表转换为 pandas 数据帧并使用groupby()
:
df = pd.DataFrame(reassembly, columns=['tickers','vol','operation'])
df.groupby('operation')['vol'].sum()
示例数据的输出:
operation
B 60946.0
S 30470.0
Name: vol, dtype: float64
另外,比如说,也许您对每个股票代码的买入/卖出总额感兴趣,您可以执行以下操作:
df.groupby(['tickers','operation'])['vol'].sum()
并得到这样的东西:
tickers operation
HYDR B 60946.0
S 30470.0
Name: vol, dtype: float64
要忽略与vol<100000
的交易,我们可以通过以下方式保持所有vol >= 100000
交易
df = df[df['vol']>=100000]