根据条件交替重新排列行?

锡德

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

df

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

我曾经想过做一个loc基于BS,然后加入他们一起在一个新的dataframe,但似乎并不像好的做法pandas

有没有一种pandas中心化的方法来解决这个问题?

需要输出

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

二凡

我们可以通过巧妙地使用reset_index

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章