查询多索引熊猫数据框

时间:2018-06-20 11:57:35

标签: pandas dataframe multi-index

对于给定的数据帧onAdd: function() { var table = this.getView().byId("reqTable"); var itemRow = { StartDate: new sap.m.Input(), EndDate: new sap.m.Input(), editable: true, LeaveType: "" }; var oModel = this.getView().getModel('userInfoTableModel').getData(); oModel.push(itemRow); this.getView().getModel('userInfoTableModel').setData(oModel); } ,例如

df

我无法查询数据框,例如

df = pd.DataFrame({'last_name': ['Clinton', 'Clinton', 'Bush', 'Bush', 'Obama'], 'first_name': ['Bill', 'Hillary', 'George Herbert Walker', 'George Walker', 'Barack']}).set_index(['last_name', 'first_name'])

,因为它失败(df.loc['last_name', :] ... # or df.xs('last_name') ... )。我认为它应该按照in this blog post about a demonstration of simple uses of MultiIndex的说明工作。

我想念什么?

2 个答案:

答案 0 :(得分:1)

您的指令查找行的索引,称为“ last_name”。该错误告诉您给定的索引不存在。

df.loc['Clinton','Bill']将返回与“克林顿·比尔”相对应的行

df.loc['Clinton',:]返回任何克林顿的行

答案 1 :(得分:1)

以下是一些选择:

使用查询(由于列命名限制而不太灵活):

df.query('last_name == "Clinton"')

将.loc与轴参数一起使用:

df.loc(axis=0)["Clinton",:]

使用.xs返回数据帧的一部分

df.xs('Clinton')

在布尔索引中使用get_level_values:

df[df.index.get_level_values(0) == "Clinton"]