我有一堆行,我想根据特定的列一个接一个地重新排列。
df
B/S
0 B
1 B
2 S
3 S
4 B
5 S
我曾经想过做一个loc
基于B
和S
,然后加入他们一起在一个新的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] 删除。
我来说两句