根据索引数据透视表中的值选择数据

根据索引数据透视表中的值选择数据

问题描述:

我确实有一个数据透视表并希望按索引中包含的值过滤索引。 我知道如何在列“值”根据索引数据透视表中的值选择数据

pd_pvt = pivot_table[(pivot_table['Value'] > 110)] 

你如何根据自己的索引名称来选择数据(仅债券)的值越大110做到这一点?

pd_pvt = pivot_table[(index_name['Value'] == "Bonds")] 

上面的代码将无法正常工作,因为指数不能被视为列

您可以尝试Index.get_level_values如果索引名是Value

pd_pvt = pivot_table[(pivot_table.index.get_level_values('Value') == "Bonds")] 

样品:

pivot_table = pd.DataFrame({'Value':[200,20,34]}, index=['James','Bonds','Aa']) 
pivot_table.index.name = 'Value' 
print (pivot_table) 
     Value 
Value  
James 200 
Bonds  20 
Aa  34 

pd_pvt = pivot_table[(pivot_table.index.get_level_values('Value') == "Bonds")] 
print (pd_pvt) 
     Value 
Value  
Bonds  20 

您还可以使用级别的位置:

pd_pvt = pivot_table[(pivot_table.index.get_level_values(0) == "Bonds")] 
print (pd_pvt) 
     Value 
Value  
Bonds  20 

或简单的index

pd_pvt = pivot_table[(pivot_table.index == "Bonds")] 
print (pd_pvt) 
     Value 
Value  
Bonds  20 
+0

感谢您的帮助,有没有办法做到多选,e.g选择该指数为“詹姆斯”和“债券”的行? – Carmen

+1

是的,使用'isin' - 'pd_pvt = pivot_table [(pivot_table.index.isin(['James','Bonds']))]' – jezrael

+0

['isin'](http://pandas.pydata.org/ pandas-docs/stable/generated/pandas.Index.isin.html) - docs。 – jezrael