2016-11-22 167 views
1

我確實有一個數據透視表並希望按索引中包含的值過濾索引。 我知道如何在列「值」根據索引數據透視表中的值選擇數據

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

你如何根據自己的索引名稱來選擇數據(僅債券)的值越大110做到這一點?

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

上面的代碼將無法正常工作,因爲指數不能被視爲列

回答

1

您可以嘗試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