Python 如何在pandas中搜索数据透视表中的数据?

Python 如何在pandas中搜索数据透视表中的数据?,python,pandas,dataframe,pivot-table,Python,Pandas,Dataframe,Pivot Table,我使用以下方法从数据帧创建了一个透视表: table = pd.pivot_table(df , index=['student','year','subject'] , values=['mark']) 我有一张这样的桌子: student year subject 'Martin' 2014 Algebra 5 Chemistry 3.5

我使用以下方法从数据帧创建了一个透视表:

table = pd.pivot_table(df , index=['student','year','subject'] , values=['mark'])
我有一张这样的桌子:

student       year        subject 

'Martin'      2014        Algebra      5
                          Chemistry    3.5 
                          Programming  8

'Sara'        2013        Algebra 2.2
 ....         ....        .....
我怎样才能得到马丁的分数

我尝试作为数据帧:

 t[t.student=='Martin'][t.year=2014][t.subject==Algebra]
但它不起作用


有人能帮我吗?谢谢你

如果您有一个多索引数据框,请将
loc
与tuple一起使用以访问值:

table.loc[("'Martin'",2014,"Algebra")]

生成的数据透视表只是另一个数据帧。但是,此数据帧具有多索引。多索引可以用级别的元组引用。这是@psidom和@Tedperou的答案


然而,另一种选择是使用


在这种特殊情况下,表实际上是一个系列。您可以在数据帧上使用
query
。因此,我们可以将其设置为数据帧,然后
query

table.to_frame().query('student == "Martin" & year == 2014 & subject == "Algebra"')

您需要重置索引才能使用布尔索引

t= table.reset_index()
t[(t.student=='Martin') & (t.year=2014) & (t.subject=='Algebra')]
也可以使用多索引选择

table.loc[('Martin', 2014, 'Algebra')]

数据透视表中的多索引将导致您的语句出现问题,请使用下面的

table.loc[('Martin',2014,'Algebra')]

我怀疑每个人都能帮上忙。。。但肯定有人能做到!可怜虫,打败我it@AndrewL继续努力谢谢你!你帮了我很多忙!谢谢你的帮助!Pd.:第二个选项比第一个更好,因为在第一个选项中,您更改了表的格式
table.loc[('Martin', 2014, 'Algebra')]