PandasPythonでグループ化された列の値に基づいて条件付きフィルタリングを実行します

ショーナック

どのMake-Auctionグループでも少なくとも1つの売上が100以上になるようにSales列でフィルタリングを実行したいと思います。したがって、Acuraの場合、Copartの売上は101であるため、Acuraの両方の行が出力で期待されます。BMWの場合、CopartとIAAの両方の売上が100未満であるため、除外されます。

データフレーム:

Make    Auction Sales   
Acura   Copart  101
Acura   IAA     88  
BMW     Copart  50  
BMW     IAA     60
Buick   Copart  130 
Buick   IAA     140

期待される出力:

Make    Auction Sales   
Acura   Copart  101
Acura   IAA         88  
Buick   Copart  130 
Buick   IAA     140

販売列全体に100を超えるフィルターを適用できますが、それは私が望んでいたものではありません。これを実行する方法について何か提案はありますか?ありがとう!

ジェズリール

ろ過を使用する

df = df.groupby('Make').filter(lambda x: x['Sales'].ge(100).any())
print (df)
    Make Auction  Sales
0  Acura  Copart    101
1  Acura     IAA     88
4  Buick  Copart    130
5  Buick     IAA    140

別の溶液locboolean indexingするためMakeによりフィルタリングされた値isin

print (df.loc[df['Sales'] >= 100, 'Make'])
0    Acura
4    Buick
5    Buick
Name: Make, dtype: object

print (df['Make'].isin(df.loc[df['Sales'] >= 100, 'Make']))
0     True
1     True
2    False
3    False
4     True
5     True
Name: Make, dtype: bool

df = df[df['Make'].isin(df.loc[df['Sales'] >= 100, 'Make'])]
print (df)
    Make Auction  Sales
0  Acura  Copart    101
1  Acura     IAA     88
4  Buick  Copart    130
5  Buick     IAA    140

2番目の解決策はより高速です:

np.random.seed(123)
N = 1000000
L = list('abcdefghijklmno')
df = pd.DataFrame({'Make': np.random.choice(L, N),
                   'Sales':np.random.randint(110, size=N)})
print (df)

In [59]: %timeit df[df['Make'].isin(df.loc[df['Sales'] >= 100, 'Make'])]
10 loops, best of 3: 55.6 ms per loop

#Alexander answer
In [60]: %timeit df[df['Make'].isin(df[df['Sales'] >= 100]['Make'].unique())]
10 loops, best of 3: 65 ms per loop

In [61]: %timeit df.groupby('Make').filter(lambda x: x['Sales'].ge(100).any())
1 loop, best of 3: 217 ms per loop

#piRSquared solution 1
In [62]: %timeit df[df.Sales.ge(100).groupby([df.Make]).transform('any')]
1 loop, best of 3: 135 ms per loop

#piRSquared solution 2
In [63]: %%timeit
    ...: f, u = pd.factorize(df.Make.values)
    ...: w = df.Sales.values >= 100
    ...: df[(np.bincount(f, w) > 0)[f]]
    ...: 
10 loops, best of 3: 67.2 ms per loop

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

複数の列条件に基づいて行をフィルタリングするループpandaspython

既存の列に基づいてパンダ列を作成します。別の列でグループ化された列の条件付き最小値

複数の行/列のグループ化されたマッチングに基づいて行をフィルタリングします

Javascript:キーの値に基づいて条件付きでJSONをフィルタリングしますか?

Rの列の2つの変数に基づいてグループ内の値を条件付きでフィルタリングする

列でグループ化し、条件に基づいてフィルタリングします

グループの行の長さに基づく、グループ化された変数の条件付きフィルタリング

パンダの複数の条件に基づいてグループ化された行をフィルタリングする

pysparkのgroupbyでフィルタリングされた行に基づいて、最大値で新しい列を作成します

パンダで抽出された値と文字列に基づいて行をフィルタリングする

パンダは複数の列をグループ化し、グループ化されていない列の条件に基づいて値を追加します

グループごとに1日あたりの最初のイベントをフィルタリングし、条件に基づいて別の列の変数を選択し、その間の値で計算を実行するにはどうすればよいですか?

Rのグループ化されたデータフレームで、他の行の値との比較に基づいて行をフィルタリングするにはどうすればよいですか?

フィルタリングされた値に基づいてデータテーブルの新しい列を作成します

パンダは1つの列でグループ化し、別の列の変位値に基づいてフィルタリングします

ネストされたキーと値のペアをループし、配列値に基づいてフィルタリングする方法

エントリと変数値の間で渡された時間に基づいて一意のID列を作成することにより、データフレーム行をグループ化します

値内の条件に基づいて(順序付けられた)ディクショナリの値をグループ化します

条件付きフィルタリングに基づいてキーと値のペアを印刷する

Excelで条件付きでフィルタリングされた値の配列を取得します

すべてのグループの値の長さに基づいてdata.frameの行をフィルタリングします

フィルタ入力に基づいてフィルタリングされた配列を取得します

グループ化されたデータによって評価された条件に基づいて、欠落している値を置き換えます

列の値に応じて異なる機能を持つグループ化されたデータフレームを条件付きで集約します

複数の条件に基づいてdata.frameのグループをフィルタリングします

指定された条件に基づいてXMLをフィルタリングできません

ある列のMAX値と、条件付きで別の列のtopN値に基づいてグループ化およびフィルター処理

列の累積合計を使用して作成されたグループ化に基づいてRdata.tableをフィルター処理します

グループ化された条件に基づいてデータセットをフィルタリングする

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ