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')]