我想自动选择一列中的值——Step_ID。不是定义我想过滤的步骤ID(如下面的代码所示(,而是排除第一个步骤ID和最后一个步骤ID。
df = df.set_index(['Step_ID'])
df.loc[df.index.isin(['Step_2','Step_3','Step_4','Step_5','Step_6','Step_7','Step_8','Step_9','Step_10','Step_11','Step_12','Step_13','Step_14','Step_15','Step_16','Step_17','Step_18','Step_19','Step_20','Step_21','Step_22','Step_23','Step_24'])]
是否有任何选项可以排除列中的第一个和最后一个值?在本例中,Step_1和Step_25。或者包括第一个值和最后一个值之外的所有值?在本例中,Step_2-Step_24。
原因是文件具有不同编号的"Step_ID"。由于我不必一直重新定义它,我希望有一个简化过滤的解决方案。有必要排除"Step_ID"列中的第一个和最后一个值,但Step_ID的数量总是不同的。
通过Step_1-Step_X,我需要Step_2-Step_(X-1(。
使用:
df = pd.DataFrame({
'Step_ID': ['Step_1','Step_1','Step_2','Step_2','Step_3','Step_4','Step_5',
'Step_6','Step_6'],
'B': list(range(9))})
print (df)
Step_ID B
0 Step_1 0
1 Step_1 1
2 Step_2 2
3 Step_2 3
4 Step_3 4
5 Step_4 5
6 Step_5 6
7 Step_6 7
8 Step_6 8
选择没有通过切片df.index[[0, -1]]
:提取的第一个和最后一个索引值的所有索引值
df = df.set_index(['Step_ID'])
df = df.loc[~df.index.isin(df.index[[0, -1]].tolist())]
print (df)
B
Step_ID
Step_2 2
Step_2 3
Step_3 4
Step_4 5
Step_5 6