gpt4 book ai didi

基于数据框的 Python 数据计算

转载 作者:行者123 更新时间:2023-12-04 08:10:29 25 4
gpt4 key购买 nike

我有一个数据框,其中的列等于日期、证券和价格。
从这张表中,对于每个日期,我想计算三种证券的每种可能组合的价格公式。
如果我有证券 X、Y、Z、...N,我想计算 2*Price(x) - Price(y) -Price(z)....并对每三个可能的证券执行此操作。
初始数据帧:


日期
安全
价格(P)


19 年 1 月 3 日
X
0.8

19 年 1 月 3 日

0.9

19 年 1 月 3 日
Z
0.95

.


.


.


2/3/19


2/3/19



结果:


日期
组合
结果


19 年 1 月 3 日
XYZ
2Px - Py - Pz

19 年 1 月 3 日
永志祥
2Py - Pz - Px

.


.


.


2/3/19
XYZ
2Px - Py - Pz

最佳答案

这是一种方法。我认为“安全”列的所有项目都是 1 个字符的长度:

result=pd.DataFrame(columns=['Date', 'Combo', 'Result'])

for i in set(df.Date):
temp=df[df.Date==i]
vals={i:k for i,k in zip(df['Security'], df['Price(P)'])}
d={''.join(i):0 for i in itertools.permutations(temp['Security'],3)}
for k in d:
d[k]=2*vals[k[0]]-vals[k[1]]-vals[k[2]]
res=pd.DataFrame({'Date':[i]*len(d), 'Combo':d.keys(), 'Result':d.values()})
result=pd.concat([result, res])

result.reset_index(drop=True, inplace=True)
例子:
df=pd.DataFrame({'Date':['2019-10-05']*4+['2020-09-10']*3, 'Security':['X', 'Y', 'Z', 'W', 'X', 'Y', 'X'], 'Price(P)':[2, 3, 1, 5, 1.2, 8, 3.9]})

>>> print(df)
Date Security Price(P)
0 2019-10-05 X 2.0
1 2019-10-05 Y 3.0
2 2019-10-05 Z 1.0
3 2019-10-05 W 5.0
4 2020-09-10 X 1.2
5 2020-09-10 Y 8.0
6 2020-09-10 X 3.9
运行上述代码后:
>>>print(result)

Date Combo Result
0 2019-10-05 XYZ -1.2
1 2019-10-05 XYW -5.2
2 2019-10-05 XZY -1.2
3 2019-10-05 XZW 1.8
4 2019-10-05 XWY -5.2
5 2019-10-05 XWZ 1.8
6 2019-10-05 YXZ 11.1
7 2019-10-05 YXW 7.1
8 2019-10-05 YZX 11.1
9 2019-10-05 YZW 10.0
10 2019-10-05 YWX 7.1
11 2019-10-05 YWZ 10.0
12 2019-10-05 ZXY -9.9
13 2019-10-05 ZXW -6.9
14 2019-10-05 ZYX -9.9
15 2019-10-05 ZYW -11.0
16 2019-10-05 ZWX -6.9
17 2019-10-05 ZWY -11.0
18 2019-10-05 WXY -1.9
19 2019-10-05 WXZ 5.1
20 2019-10-05 WYX -1.9
21 2019-10-05 WYZ 1.0
22 2019-10-05 WZX 5.1
23 2019-10-05 WZY 1.0
24 2020-09-10 XYX -4.1
25 2020-09-10 XXY -4.1
26 2020-09-10 YXX 8.2
如果“安全”列包含超过 1 个字符的项目,您最好使用元组。
在这种情况下,只需替换以下内容:
d={''.join(i):0 for i in itertools.permutations(temp['Security'],3)} 
这样:
d={i:0 for i in itertools.permutations(temp['Security'],3)}

关于基于数据框的 Python 数据计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65990066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com