通过pandas怎么筛选出同时满足多个不同条件的数据


level   gender       math    type
0     a    man       120      B
1     b    woman     130     B
2     a    man        110     S

对于这样的数据:怎样筛选出对于相同的level和相同的gender,同时满足type有B和S的行
也就是,通过筛选出这些数据

  level gender    math  type
     a    man      120      B
     a    man      110     S

我靠,可算是肝出来了

import pandas as pd
df=pd.read_excel('./pandas_study.xlsx')
df1=df.head(10)
print(df1)
df = df.query('type in ["B","S"]')
#print(df)
#分组
df2 = df.groupby(['level', 'gender']).type.nunique().reset_index()
df2.columns=['level','gender','num']
print(df2)
print("********")
df2 = df2.set_index(['level', 'gender'])
print(df2)
print("********")
df = df.set_index(['level', 'gender'])
df['num']=pd.NA
df.update(df2)
df = df.query('num>=2&type in ["B","S"]').drop('num', axis=1).reset_index()
print('\n',df)

下面是我的xlsx

  level gender  math     type
0     a    man       123    B
1     b  woman       188    B
2     a    man        11    S
3     b    man        23    B
4     b  woman        23    R

df=df.query('gender=="man"&type in ["B","S"]')