根据索引数据透视表中的值选择数据
问题描述:
我确实有一个数据透视表并希望按索引中包含的值过滤索引。 我知道如何在列“值”根据索引数据透视表中的值选择数据
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
感谢您的帮助,有没有办法做到多选,e.g选择该指数为“詹姆斯”和“债券”的行? – Carmen
是的,使用'isin' - 'pd_pvt = pivot_table [(pivot_table.index.isin(['James','Bonds']))]' – jezrael
['isin'](http://pandas.pydata.org/ pandas-docs/stable/generated/pandas.Index.isin.html) - docs。 – jezrael