C
Ode Proceeds Pos Amount Positions Target Weighting Addition
676 30160 FPE 51741.25 5 0.1 0.187636
676 30160 HFA 57299.63616 5 0.2 0.2077939
676 30160 PFL 60437.40563 5 0.2 0.2191728
676 30160 PSO 53053.5741 5 0.15 0.1923958
676 30160 RNS 53220.36636 5 0.2 0.1930006
953 34960 PFL 8506.1939 1 0.2 1
637 14750 PFL 8341.21701 3 0.2 0.3025169
637 14750 PSO 12669.65078 3 0.15 0.4594993
637 14750 RNS 6561.85824 3 0.2 0.2379836
673 12610 FPE 31220.475 5 0.1 0.1750410
673 12610 HFA 34020.2928 5 0.2 0.1907384
673 12610 PFL 37754.00236 5 0.2 0.2116719
673 12610 PSO 31492.56779 5 0.15 0.1765665
673 12610 RNS 43873.58472 5 0.2 0.2459820
318 93790 PFL 59859.3918 2 0.2 0.2852660
318 93790 PSO 149977.7109 2 0.15 0.7147339
222 75250 FPE 21000 6 0.1 0.1 7525
222 75250 HFA 42000 6 0.2 0.2 15050
222 75250 PFL 42000 6 0.2 0.2 15050
222 75250 PSO 31500 6 0.15 0.15 11287.5
222 75250 RNS 42000 6 0.2 0.2 15050
222 75250 CRD 31500 6 0.15 0.15 11287.5
最后6行包含一个完整的分组。对于所有没有排名行== 6的分组,除了["Proceeds"]
下分组的总价值外,我还想获取["Ode"]
列中的金额,并创建一个“增量”列,其中显示了要使["Weighting"]
列尽可能接近目标的更改。
答案 0 :(得分:2)
IIUC,您可以使用:
m = df.groupby('Ode')['Positions'].transform(lambda x: (x == 6).any())
df.loc[m, 'Additions'] = df['Proceeds'] * df['Weighting']
print(df)
输出:
Ode Proceeds Pos Amount Positions Target Weighting Additions
0 676 30160 FPE 51741.25000 5 0.10 0.187636 NaN
1 676 30160 HFA 57299.63616 5 0.20 0.207794 NaN
2 676 30160 PFL 60437.40563 5 0.20 0.219173 NaN
3 676 30160 PSO 53053.57410 5 0.15 0.192396 NaN
4 676 30160 RNS 53220.36636 5 0.20 0.193001 NaN
5 953 34960 PFL 8506.19390 1 0.20 1.000000 NaN
6 637 14750 PFL 8341.21701 3 0.20 0.302517 NaN
7 637 14750 PSO 12669.65078 3 0.15 0.459499 NaN
8 637 14750 RNS 6561.85824 3 0.20 0.237984 NaN
9 673 12610 FPE 31220.47500 5 0.10 0.175041 NaN
10 673 12610 HFA 34020.29280 5 0.20 0.190738 NaN
11 673 12610 PFL 37754.00236 5 0.20 0.211672 NaN
12 673 12610 PSO 31492.56779 5 0.15 0.176566 NaN
13 673 12610 RNS 43873.58472 5 0.20 0.245982 NaN
14 318 93790 PFL 59859.39180 2 0.20 0.285266 NaN
15 318 93790 PSO 149977.71090 2 0.15 0.714734 NaN
16 222 75250 FPE 21000.00000 6 0.10 0.100000 7525.0
17 222 75250 HFA 42000.00000 6 0.20 0.200000 15050.0
18 222 75250 PFL 42000.00000 6 0.20 0.200000 15050.0
19 222 75250 PSO 31500.00000 6 0.15 0.150000 11287.5
20 222 75250 RNS 42000.00000 6 0.20 0.200000 15050.0
21 222 75250 CRD 31500.00000 6 0.15 0.150000 11287.5