2つの列を比較するパンダのデータフレームをフィルタリング

HegChin:

さまざまな列で構成されてデータフレームを考えてみましょうが、私は、2つの列の値を比較することにより、データフレームをフィルタリングしたいと思います。ここでは、以下のデータフレームのサンプルです。

Machine   Position
  M01         PB0
  M02         PB0
  M03         PB0
  M04         PB0
  M01         PB1
  M02         PB1
  M01         PB1
  M01         PB1

あなたはすべてのマシンを持って見ることができます上の位置PB0 2つだけのマシンがPB0とPB1の両方を持って、今私は多分PB0とPB1の両方持っているマシンのリスト期待 machine=['M01','M02'] を検討するための一つの事は多くの重複があるかもしれないこれら二つの列の間です。

Itamar MUSHKIN:

のは、あなたのデータフレームを定義してみましょう:

import pandas as pd
df = pd.DataFrame({'Machine': {0: 'M01',
  1: 'M02',
  2: 'M03',
  3: 'M04',
  4: 'M01',
  5: 'M02',
  6: 'M01',
  7: 'M01'},
 'Position': {0: 'PB0',
  1: 'PB0',
  2: 'PB0',
  3: 'PB0',
  4: 'PB1',
  5: 'PB1',
  6: 'PB1',
  7: 'PB1'}})

各マシンの位置を取得するには、関係なく、重複の、我々は使用することができます。

s = df.groupby('Machine')['Position'].apply(set)

これは次のようになります。

Machine
M01    {PB1, PB0}
M02    {PB1, PB0}
M03         {PB0}
M04         {PB0}
Name: Position, dtype: object

その位置の両方が含まれるマシンのみ取得するPB0と、PB1私たちが使用することができますが

s[s.apply(lambda x: x.issuperset({'PB1','PB0'}))].index

そのリターン

Index(['M01', 'M02'], dtype='object', name='Machine')

(あなたも追加することができます.to_list()あなたがpd.Indexにリストを好む場合は最後に)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=4626&siteId=1