Python 将数据帧与其列的循环移位子集连接起来

Python 将数据帧与其列的循环移位子集连接起来,python,pandas,dataframe,concatenation,Python,Pandas,Dataframe,Concatenation,我有一只熊猫 id v1 v2 1 20.1 30.1 2 32.0 40 3 11.0 12.012 我想再添加两列,使我的数据框看起来像: id v1 v2 v1_new v2_new 1 20.1 30.1 32.0 40 2 32.0 40 11.0 12.012 3 11.0 12.012 20.1 30

我有一只熊猫

id    v1       v2
 1    20.1    30.1
 2    32.0    40
 3    11.0    12.012
我想再添加两列,使我的数据框看起来像:

id    v1       v2     v1_new    v2_new
 1    20.1    30.1    32.0      40
 2    32.0    40      11.0      12.012
 3    11.0    12.012  20.1      30.1
i、 e将下一个连续行作为列添加到上一行中,并为最后一行添加列填充第一行的值


有什么办法吗?

使用
np.roll

In [793]: df.assign(v1_new=np.roll(df.v1, -1), v2_new=np.roll(df.v2, -1))
Out[793]:
   id    v1      v2  v1_new  v2_new
0   1  20.1  30.100    32.0  40.000
1   2  32.0  40.000    11.0  12.012
2   3  11.0  12.012    20.1  30.100

作为参考,您可以使用
df.iloc
pd.concat
实现通用版本的
np.roll

In [521]: pd.concat([df1, df1.iloc[:, -2:].transform(np.roll, shift=-1).add_suffix('_new')], 1)
Out[521]: 
   id    v1      v2  v1_new  v2_new
0   1  20.1  30.100    32.0  40.000
1   2  32.0  40.000    11.0  12.012
2   3  11.0  12.012    20.1  30.100

这是的一个更通用的版本,如果您想要滚动任意数量的列,则可以使用。

Nice。。。新的东西。