我有这样的数据:
price volume
0 100.0 2500
1 100.5 4100
2 101.0 2311
3 101.5 5066
4 102.0 9585
... ... ...我想先得到一组价格,然后用一步5来和成交量。例如(使用随机值):
price volume
0 100.0 15000
1 105.0 12000
2 110.0 19000
3 115.0 30000
4 120.0 21000
... ... ...最后,根据个别的成交量和价格,我想给每个价格一个权重/加权平均值/分数,这样我就可以标准化数据,以知道哪个成交量的权重最大。例如:
price volume weight
0 100.0 15000 3
1 105.0 12000 2.5
2 110.0 19000 3.5
3 115.0 30000 5
4 120.0 21000 4
... ... ...有人能帮我吗?
发布于 2020-11-20 01:39:43
我用标准的方法来绕过价格,所以97.5到102.49将在100组。体重--我用了简单的公式作为证据。
data.csv:
price volume
100.0 2500
103.5 4100
101.0 2311
105.5 5066
109.0 9585代码:
import pandas as pd
import numpy as np
df = pd.read_csv('data.csv', delimiter='\s+')
print(df)
df['price_grp'] = np.around(df.price.values/5, decimals=0)*5
df['tot_vol'] = df.groupby('price_grp')['volume'].transform('sum')
df['weight'] = np.around(df['volume'] / df['tot_vol'], decimals=2)
print(df)输出:
price volume
0 100.0 2500
1 103.5 4100
2 101.0 2311
3 105.5 5066
4 109.0 9585
price volume price_grp tot_vol weight
0 100.0 2500 100.0 4811 0.52
1 103.5 4100 105.0 9166 0.45
2 101.0 2311 100.0 4811 0.48
3 105.5 5066 105.0 9166 0.55
4 109.0 9585 110.0 9585 1.00https://stackoverflow.com/questions/64921864
复制相似问题