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



我想自动选择一列中的值——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

相关内容

  • 没有找到相关文章

最新更新