回答編集履歴

1

サンプルを追加

2017/08/31 04:20

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -27,3 +27,35 @@
27
27
 
28
28
 
29
29
  この記述で、単にループで計算するよりはかなり高速になるかと思います。
30
+
31
+
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ **【補足】**
40
+
41
+ 別の列を処理するサンプル
42
+
43
+
44
+
45
+ ```Python
46
+
47
+ for (wcolumn, zcolumn) in zip(W_columns, Z_columns):
48
+
49
+ # 上記20%以内かどうかのBoolean列を作成
50
+
51
+ z20_filter = afterdf2.groupby(['DATE','SECTOR'])[zcolumn].transform(lambda d:d >= d.quantile(0.8))
52
+
53
+ # 上記のBoolean列にてFilteringした後に"MKT_CAP"列を計算
54
+
55
+ afterdf2['PP'] = afterdf2[z20_filter].groupby(['DATE', 'SECTOR'])['MKT_CAP'].transform(lambda d:d/d.sum())
56
+
57
+ # 上記のFilterに漏れた場所は値が入っていないので、0埋めする
58
+
59
+ afterdf2['PP'].fillna(0, inplace=True)
60
+
61
+ ```