Pandas: 使用 loc 按命名索引切片,但不包括第一个索引

Pandas: slice by named index using loc, but not include first index

我有一个带有命名索引的数据框,需要 select 以上所有特定索引,不包括它。

例如:

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
     index=['cobra', 'viper', 'sidewinder'],
     columns=['max_speed', 'shield'])
max_speed shield
cobra 1 2
viper 4 5
sidewinder 7 8

我需要 select 在 cobra 下面进行 df。所以像伪代码:df.loc['cobra'+1 : ]

有几种方法可以解决这个问题:

>>> df.iloc[df.index.tolist().index('cobra')+1:]
            max_speed  shield
viper               4       5
sidewinder          7       8

>>> df.drop('cobra', axis=0)
            max_speed  shield
viper               4       5
sidewinder          7       8

>>> df[df.index != 'cobra']
            max_speed  shield
viper               4       5
sidewinder          7       8

加法:

>>> df.iloc[df.index.get_indexer(['cobra'])[0]+1:]
            max_speed  shield
viper               4       5
sidewinder          7       8

选择不包括眼镜蛇:

df.iloc[df.index.get_indexer(['cobra'])[0]+2:,:]

尝试

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
     index=['cobra', 'viper', 'sidewinder'],
     columns=['max_speed', 'shield'])
print(df.loc[df.index > 'cobra'])

输出

            max_speed  shield
viper               4       5
sidewinder          7       8