回答編集履歴

1

よりよい方法があった

2020/07/14 07:41

投稿

kirara0048
kirara0048

スコア1399

test CHANGED
@@ -1,8 +1,4 @@
1
- まず`.fillna()`を用いて「max_」列の`NaN`を`False`に変更します。
2
-
3
- 続いて、「kigou」「memo」が同じ物をグループ化して`any()`を用いることで、「max_」列に`True`が含まれるグループとそうないものを判別します。
1
+ 「kigou」「memo」が同じ物をグループ化した後に、「max_」列に対して`any()`を用いることで、「max_」列に`True`が含まれるグループのみを残すこます。
4
-
5
- 最後に、それを`data`からインデクシングします。
6
2
 
7
3
 
8
4
 
@@ -24,7 +20,7 @@
24
20
 
25
21
 
26
22
 
27
- data[data.fillna({'max_': False}).groupby(['kigou', 'memo'])['max_'].transform('any')]
23
+ data.groupby(['kigou', 'memo']).filter(lambda s: s['max_'].any())
28
24
 
29
25
  # kigou memo point max_
30
26