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。。。新的东西。