Pandasデータフレームを1つの列でグループ化し、別の列に基づいて行をドロップします

sepideh

私は次のようなパンダのデータフレームを持っています:

     UNIT        MACHINE
1    a100        001
2    a100        002
3    a100        003
4    a100        001
5    b222        001
6    b222        002
7    b222        002
8    b222        003

「UNIT」に基づいてグループ化し、[001、002、003]「MACHINE」シーケンスのない行を削除したいと思います。つまり、UNIT "a100"のシーケンスは[001、002、003、001]であるため、削除する必要がありますが、MACHINE 002の繰り返しに関係なくシーケンスが正しいため、UNIT "b222"は残ります。

出力は次のようになります。

     UNIT        MACHINE
5    b222        001
6    b222        002
7    b222        002
8    b222        003

シーケンス[001、002、003]は、ここで例として記述した許容可能なMACHINEシーケンスの1つです。そのようなシーケンスはいくつかあり、それらはすべて単調に増加しています。

これを実行するには、GroupByとdropをどのように組み合わせる必要がありますか?

MaxU
In [26]: chk_set = set(df.MACHINE.unique())

In [27]: df[df.groupby('UNIT')['MACHINE']
              .transform(lambda x: x.is_monotonic_increasing & chk_set.issubset(set(x)))]
Out[27]:
   UNIT MACHINE
5  b222     001
6  b222     002
7  b222     002
8  b222     003

更新:

次のDFがあると仮定します。

In [90]: df
Out[90]:
    UNIT MACHINE
1   a100     001
2   a100     002
3   a100     003
4   a100     001
5   b222     001
6   b222     002
7   b222     002
8   b222     003
9     c1     001
10    c1     003
11    c2     078
12    c2     079
13    c2     080
14    c3     078
16    c3     080

照合する連結グループの配列

In [91]: chk_groups = np.array(['001002003','078079080'])

解決:

In [92]: df[df.groupby('UNIT')['MACHINE']
              .transform(lambda x: x.is_monotonic_increasing
                                   & np.in1d(x.unique().sum(),chk_groups))]
Out[92]:
    UNIT MACHINE
5   b222     001
6   b222     002
7   b222     002
8   b222     003
11    c2     078
12    c2     079
13    c2     080

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

同じデータフレームの別の列に基づいて1つの列をバープロットします

分類Dev

データフレームを1つの列でグループ化し、列に基づいて情報を追加する

分類Dev

pandas データフレームの条件に基づいてグループの列を作成します

分類Dev

別の列のグループ化に基づく最小最大正規化を使用して、データフレームの列を正規化します

分類Dev

groupbyを実行すると、データフレームが列をドロップするのはなぜですか?(ドロップする列は、グループ化に使用している列の1つです)

分類Dev

Pandasデータフレームから、他の列のグループ化と最大値に基づいて特定の列値を返します

分類Dev

「RosettaStone」データフレームに基づいて、1つの文字列を新しい文字列にマップする新しい列を追加しますか?

分類Dev

IDでグループ化しながら、他の列の値に基づいて新しいデータフレームを作成します

分類Dev

別のデータフレームでのルックアップに基づいて、データフレーム内の行を削除します

分類Dev

1列の値に基づいてデータをグループ化し、マクロを使用してExcelで行形式で印刷します。

分類Dev

1つの列に基づいてグループ化し、別の列の合計値を取得します

分類Dev

別のデータフレームの行の値に基づいて、1つのデータフレームの列を合計します

分類Dev

別のデータフレーム列に基づいて1つの列を作成します

分類Dev

パンダは、特定の列の値に基づいてデータフレーム内の行をグループ化します

分類Dev

別の列に基づいてデータフレームに列をドロップする

分類Dev

別の列の値に基づいてデータフレームのルックアップを実行します

分類Dev

1つの列の条件に基づいて、他の列からプルして、データフレームに新しい変数を作成しますか?(dplyr)

分類Dev

グループに基づいてデータフレームをフラット化しながら、行を列に転置します

分類Dev

別のデータフレームに基づいてアイテムをグループ化するデータフレームを構築します

分類Dev

別のグループ値に基づいて1つのデータフレームにデータを入力します

分類Dev

フレームの1つの列と別の列の2つの列に基づいて2つのデータフレームを結合します

分類Dev

パンダデータフレームのグループ化された列の1つの列の違いのグラフをプロットします

分類Dev

一致した列値と他のデータフレームの組み合わせに基づいて行パンダをドロップします

分類Dev

データフレームをグループ化し、条件に基づいてその中から1つのセルを選択します

分類Dev

データフレームを列でグループ化し、文字列を別の列に連結します

分類Dev

1つの列の値に基づいて、グループ全体で別の列の値を変更します

分類Dev

2つの列のグループ化に基づいてテーブルデータを挿入します

分類Dev

列の1つの値に基づいて、データフレームに行を追加します

分類Dev

pandasデータフレームの他のインデックス値に基づいてインデックス値をグループ化します

Related 関連記事

  1. 1

    同じデータフレームの別の列に基づいて1つの列をバープロットします

  2. 2

    データフレームを1つの列でグループ化し、列に基づいて情報を追加する

  3. 3

    pandas データフレームの条件に基づいてグループの列を作成します

  4. 4

    別の列のグループ化に基づく最小最大正規化を使用して、データフレームの列を正規化します

  5. 5

    groupbyを実行すると、データフレームが列をドロップするのはなぜですか?(ドロップする列は、グループ化に使用している列の1つです)

  6. 6

    Pandasデータフレームから、他の列のグループ化と最大値に基づいて特定の列値を返します

  7. 7

    「RosettaStone」データフレームに基づいて、1つの文字列を新しい文字列にマップする新しい列を追加しますか?

  8. 8

    IDでグループ化しながら、他の列の値に基づいて新しいデータフレームを作成します

  9. 9

    別のデータフレームでのルックアップに基づいて、データフレーム内の行を削除します

  10. 10

    1列の値に基づいてデータをグループ化し、マクロを使用してExcelで行形式で印刷します。

  11. 11

    1つの列に基づいてグループ化し、別の列の合計値を取得します

  12. 12

    別のデータフレームの行の値に基づいて、1つのデータフレームの列を合計します

  13. 13

    別のデータフレーム列に基づいて1つの列を作成します

  14. 14

    パンダは、特定の列の値に基づいてデータフレーム内の行をグループ化します

  15. 15

    別の列に基づいてデータフレームに列をドロップする

  16. 16

    別の列の値に基づいてデータフレームのルックアップを実行します

  17. 17

    1つの列の条件に基づいて、他の列からプルして、データフレームに新しい変数を作成しますか?(dplyr)

  18. 18

    グループに基づいてデータフレームをフラット化しながら、行を列に転置します

  19. 19

    別のデータフレームに基づいてアイテムをグループ化するデータフレームを構築します

  20. 20

    別のグループ値に基づいて1つのデータフレームにデータを入力します

  21. 21

    フレームの1つの列と別の列の2つの列に基づいて2つのデータフレームを結合します

  22. 22

    パンダデータフレームのグループ化された列の1つの列の違いのグラフをプロットします

  23. 23

    一致した列値と他のデータフレームの組み合わせに基づいて行パンダをドロップします

  24. 24

    データフレームをグループ化し、条件に基づいてその中から1つのセルを選択します

  25. 25

    データフレームを列でグループ化し、文字列を別の列に連結します

  26. 26

    1つの列の値に基づいて、グループ全体で別の列の値を変更します

  27. 27

    2つの列のグループ化に基づいてテーブルデータを挿入します

  28. 28

    列の1つの値に基づいて、データフレームに行を追加します

  29. 29

    pandasデータフレームの他のインデックス値に基づいてインデックス値をグループ化します

ホットタグ

アーカイブ