按多列值搜索数据框

时间:2021-03-24 15:02:11

标签: python dataframe

这是我的数据框:

<头>
主题 分数
0 A 数学 7
1 A 英文 8
2 A 数学 3
3 B 英文 9
4 B 艺术 3
5 C 数学 3
6 C 艺术 3
7 C 化学 7

如果学生的数学成绩为 7 分,英语成绩为 8 分(本例中为学生 A),如何获取学生姓名?

我试过这样:

    data = {'PERSON': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
                'SUBJECT': ['Math', 'English', 'Math', 'English', 'Art', 'Math', 'Art', 'Chemistry'],
                'SCORE' : [7, 8, 3, 9, 3, 3, 3, 7]
                }
    
df = pd.DataFrame(data, columns=['PERSON', 'SUBJECT', 'SCORE'])
    
st = df.loc[(df['SUBJECT'] == 'Math') & (df['SCORE'] == 7)]

这给了我

<块引用>

0 数学 7

如何只获得数学7分、英语8分的人?

1 个答案:

答案 0 :(得分:1)

这是我想出的解决方案:

df.set_index('PERSON', inplace=True)

st = df.loc[(df['SUBJECT'] == 'Math') & (df['SCORE'] == 7)]
st2 = df.loc[(df['SUBJECT'] == 'English') & (df['SCORE'] == 8)]

index1 = st.index
index2 = st2.index

if index1==index2:
    print(index1)
else:
    print("None")
相关问题