如果我愿意
df = df.apply(np.roll, shift=-1) --> this moves everything by one row.
first row gets to last row.
这很完美,但是它不会使索引与行一起移位。
还有没有办法转移索引?
答案 0 :(得分:0)
您可以使用.iloc
自己完成此操作:
import numpy as np
shift = 1
l = len(df)
df.iloc[np.r_[(l-shift)%l:l, 0:(l-shift)%l]]
# 0 1 2
#d 3 4 5
#a 8 8 1
#a 4 8 5
#b 9 9 3
#c 5 1 7
shift = -2
# 0 1 2
#b 9 9 3
#c 5 1 7
#d 3 4 5
#a 8 8 1
#a 4 8 5
或重置索引,然后将其重新设置:
df.reset_index().apply(np.roll, shift=1).set_index('index')
# 0 1 2
#index
#d 3 4 5
#a 8 8 1
#a 4 8 5
#b 9 9 3
#c 5 1 7
0 1 2
a 8 8 1
a 4 8 5
b 9 9 3
c 5 1 7
d 3 4 5