给定一个带有 MultiIndex 的 Pandas DataFrame,我们如何根据特定值选择行/每个索引级别中的标签?
df.loc[key, :]
df.xs(level_key, level=level_name, drop_level=True/False)
df.query("condition")
mask = df.index.get_level_values(level_name).isin(values_list) selected_rows = df[mask]
示例1:选择级别“一”中具有特定值的行,并且'two':
# Using loc selected_rows = df.loc[['a'], ['t', 'u']] # Using xs selected_rows = df.xs('a', level='one', drop_level=False) selected_rows = selected_rows.xs(['t', 'u'], level='two') # Using query selected_rows = df.query("one == 'a' and two.isin(['t', 'u'])") # Using get_level_values one_mask = df.index.get_level_values('one') == 'a' two_mask = df.index.get_level_values('two').isin(['t', 'u']) selected_rows = df[one_mask & two_mask]
示例 2:根据级别 'two' 中的数值不等式过滤行:
# Using query selected_rows = df.query("two > 5") # Using get_level_values two_mask = df.index.get_level_values('two') > 5 selected_rows = df[two_mask]
以上是如何有效地选择 Pandas MultiIndex DataFrame 中的行?的详细内容。更多信息请关注PHP中文网其他相关文章!