teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

よりよい方法があった

2020/07/14 07:41

投稿

kirara0048
kirara0048

スコア1399

answer CHANGED
@@ -1,6 +1,4 @@
1
- まず`.fillna()`を用いて「max_」列の`NaN`を`False`に変更します。
2
- 続いて、「kigou」「memo」が同じ物をグループ化し、`any()`を用いることで、「max_」列に`True`が含まれるグループとそうでないものを判別します。
1
+ 「kigou」「memo」が同じ物をグループ化した後に「max_」列に対して`any()`を用いることで、「max_」列に`True`が含まれるグループの残すことができます。
3
- 最後に、それを`data`からインデクシングします。
4
2
 
5
3
  ```python
6
4
  data
@@ -11,7 +9,7 @@
11
9
  # 3 CC 〇 10 NaN
12
10
  # 4 CC × 20 NaN
13
11
 
14
- data[data.fillna({'max_': False}).groupby(['kigou', 'memo'])['max_'].transform('any')]
12
+ data.groupby(['kigou', 'memo']).filter(lambda s: s['max_'].any())
15
13
  # kigou memo point max_
16
14
  # 1 AA × 40 True
17
15
  # 2 CC 〇 50 True