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
我有一个带有命名索引的数据框,需要 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