定义要选择/取消选择的列值作为默认值

Define column values to be selected / disselected as default

我想自动选择一列中的值 - Step_ID。 Insted定义我想过滤的Step_ID(如下面的代码所示)我想定义,第一个Step_ID和最后一个Step_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_IDs的数字总是不同的。

通过 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

Select 所有索引值,没有通过切片提取的第一个和最后一个索引值 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