I have this dataframe:
MAT MAT_IN SER D8
0 X A1 Yes -
1 X A2 No X
2 X A3 No X
3 X A4 Yes X
4 Y B1 No -
5 Y B2 No -
6 Y B3 No -
7 Y B4 No -
8 Y B5 No -
9 Z K1 Yes -
10 Z K2 No -
11 Z K3 No X
12 Z K4 Yes X
Where I would like to create a filter so I only get the first row. The filter have the following criteria:
- Column "Ser" = "Yes" and Column "D8" = "-"
- Rest of the rows in the group (Column "MAT", in this case X), must have Column "D8" = "X"
How do I apply such a filter on my dataframe?
My code:
import pandas as pd
data = {'MAT':['X','X','X','X','Y','Y','Y','Y','Y','Z','Z','Z','Z'],
'MAT_IN':['A1','A2','A3','A4','B1','B2','B3','B4','B5','K1','K2','K3','K4'],
'SER':['Yes','No','No','Yes','No','No','No','No','No','Yes','No','No','Yes'],
'D8':['-','X','X','X','-','-','-','-','-','-','-','X','X']}
df1=pd.DataFrame(data, columns=['MAT','MAT_IN','SER','D8'])
df1
Any expected result are in Column D99:
MAT MAT_IN SER D8 D99
0 X A1 Yes - X
1 X A2 No X -
2 X A3 No X -
3 X A4 Yes X -
4 Y B1 No - -
5 Y B2 No - -
6 Y B3 No - -
7 Y B4 No - -
8 Y B5 No - -
9 Z K1 Yes - -
10 Z K2 No - -
11 Z K3 No X -
12 Z K4 Yes X -