这是我的数据框:
人 | 主题 | 分数 | |
---|---|---|---|
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分的人?
答案 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")