質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

2268閲覧

複数の条件下におけてdataframeをdropする方法(python,pandas)

usuke

総合スコア23

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/07/14 07:21

複数の条件下におけてdataframeをdropする方法

以下の表(dataframe)が与えられたとします。
列["max_"]は同一の"kigou"における"point"が最も高いデータに対してTrueと記載されています。

|kigou|memo|point|max_|
|:--|:--:|--:|
|AA|〇|20|NaN
|AA|×|40|True
|CC|〇|50|True
|CC|〇|10|NaN
|CC|×|20|NaN

以下のルールに基づいて処理を行いたいです。
列["max_"] == 'True"のデータについて、
・kigouとmemoが同じものは残す
・kigouが同じだけれども、memoが異なるデータ(行)は削除

つまり、次のような表(dataframe)を得たいです。
|kigou|memo|point|max_
|:--|:--:|--:|
|AA|×|40|True
|CC|〇|50|True
|CC|〇|10|NaN

pandasのdropを用いて検討しましたが、うまくできませんでした。
また明らかに間違っていますが、以下のようなfor文を回しても出来ませんでした。

どなたかヒントを頂けないでしょうか。

python3

1for i in range(len(data)): 2 if data.loc[i,'max_'] == 'True': 3 a = data.loc[i,'kigou'] 4 b = data2.loc[i,'memo'] 5 for j in range(len(data)): 6 if data.loc[j,'memo'] != a and data2.loc[j,'kigou'] == b: 7 data.drop(data.index[j])

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「kigou」「memo」が同じ物をグループ化した後に、「max_」列に対してany()を用いることで、「max_」列にTrueが含まれるグループのみを残すことができます。

python

1data 2# kigou memo point max_ 3# 0 AA 〇 20 NaN 4# 1 AA × 40 True 5# 2 CC 〇 50 True 6# 3 CC 〇 10 NaN 7# 4 CC × 20 NaN 8 9data.groupby(['kigou', 'memo']).filter(lambda s: s['max_'].any()) 10# kigou memo point max_ 11# 1 AA × 40 True 12# 2 CC 〇 50 True 13# 3 CC 〇 10 NaN

投稿2020/07/14 07:36

編集2020/07/14 07:41
kirara0048

総合スコア1399

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usuke

2020/07/15 01:50

的確なアンサーありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問