在不删除数据的情况下移动 pandas 中的列

shifting column in pandas without eliminating data

输入:

##      x2
##0    214
##1    234
##2    253
##3    272
##4    291

期望的输出:

##     x2
##0    291
##1    214
##2    234
##3    253
##4    272

以下代码消除了移位列的底部并将 NA 放在顶部。但是,我想要它作为一个循环。

a = pd.DataFrame([214,234,253,272,291], columns=['x2'])
a.x2 = a.x2.shift(1) 

我会在调用 shift:

之后链接一个调用来填充 fillna
import pandas
a = pandas.DataFrame([214,234,253,272,291], columns=['x2'])
a['x3'] = a.shift(1).fillna(a['x2'].iloc[-1])
print(a)

   x2   x3
0  214  291
1  234  214
2  253  234
3  272  253
4  291  272

您可以直接重新分配给 x2 列,但我希望能够一次显示源和结果以进行比较