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にリストを好む場合は最後に)