我试图对价格列中的数据进行分组,以便差异不是 0.01 而是 0.02,并将分组的价格放入一个元组中,也在 vol 列中按分组价格汇总数据,我正在考虑通过实现它。通过将它们完全除以 // 0.02,然后对它们进行分组来计算价格余额的累积总和,但结果价格差异从 0.01 浮动到 0.03 我还认为问题出在浮点数上,并将价格乘以。 100 并除以 // 2 以获得源数据中的 int,但这也没有给出结果我的代码:
price = [str(i / 100) for i in range(20)]
vol = [random.randint(100, 300) for i in range(20)]
price.reverse()
data = ({'vol': vol, 'price': price})
df = (pd.DataFrame(data).astype({'price': 'float'})
.eval('diffs=price.diff().fillna(0).abs().cumsum().round(2)// 0.02')
.groupby('diffs')
.agg(vol=('vol', 'sum'), price=('price', 'min'), tags=('price', tuple)))
print(df)
结果应该是这样的:
vol price tags
295 0.18 (0.19, 0.18)
455 0.16 (0.17, 0.16)
655 0.14 (0.15, 0.14)
284 0.12 (0.13,0.12)
549 0.10 (0.11, 0.10)
770 0.08 (0.09, 0.08)
199 0.06 (0.70,0.06)
552 0.04 (0.05, 0.04)
708 0.02 (0.03, 0.02)
171 0.00 (0.10, 0.00)
ps in vol 中的金额应为标签中的价格,即使数字为 0.70,小数位数也应始终为 2,并且在价格列中,无论价格如何,价格步长应始终保持 0.02。行数奇偶校验
如果以整数进行转换并且仅在最后除以 100 并格式化