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,两者都可以。