Python 根据条件重新排列行?

Python 根据条件重新排列行?,python,pandas,Python,Pandas,我有一堆行,我想根据一个特定的列一个接一个地重新排列它们 df B/S 0 B 1 B 2 S 3 S 4 B 5 S 我曾考虑过基于B和S做一个loc,然后将它们全部添加到一个新的数据帧中,但这似乎不是熊猫的好做法 是否有以pandas为中心的方法 所需输出 B/S 0 B 2 S 1 B 3 S 4 B 5 S 我们可以通过巧妙地使用reset\u索引来实现这一点: m = df['B/S'].

我有一堆行,我想根据一个特定的列一个接一个地重新排列它们

df

     B/S
0    B
1    B
2    S
3    S
4    B
5    S
我曾考虑过基于
B
S
做一个
loc
,然后将它们全部添加到一个新的
数据帧中
,但这似乎不是
熊猫的好做法

是否有以
pandas
为中心的方法

所需输出

     B/S
0    B
2    S
1    B
3    S
4    B
5    S


我们可以通过巧妙地使用
reset\u索引
来实现这一点:

m = df['B/S'].eq('B')
b = df[m].reset_index(drop=True)
s = df[~m].reset_index(drop=True)

out = b.append(s).sort_index().reset_index(drop=True)

  B/S
0   B
1   S
2   B
3   S
4   B
5   S

如果您希望保留索引信息,我们可以稍微调整我们的方法:

m = df['B/S'].eq('B')
b = df[m].reset_index()
s = df[~m].reset_index()

out = b.append(s).sort_index().set_index('index')

      B/S
index    
0       B
2       S
1       B
3       S
4       B
5       S

那么您想让S跟在B后面吗?您想保持输出中显示的索引吗?@Erfan索引不重要。@sammywemmy是的。S跟随B或B跟随S,两者都可以。