首页 > 解决方案 > 删除 2 列的行并从下一行向上移动

问题描述

如何删除 a 和 b 列的每一行并从下一行替换 a 和 b?我不确定如何以有效的方式做到这一点,因为我有一个大数据集。

我的数据框

╔═══════════════════════════╗
║ Name      a   b   c   d   ║
╠═══════════════════════════╣
║ Lisa      5   4   1   3   ║
║ Timmy     3   2   7   2   ║  
║ Rann      2   3   1   5   ║
║ Bob       1   6   3   4   ║
╚═══════════════════════════╝

我想把它改成这个

╔══════════════════════════════════════════╗
║ Name      c   d   a   b                  ║
╠══════════════════════════════════════════╣
║ Lisa      1   3   3   2                  ║
║ Timmy     7   2   2   3                  ║  
║ Rann      1   5   1   6                  ║
║ Bob       3   4  (a & b from next row)   ║
╚══════════════════════════════════════════╝

Lisa 的 a 和 b 替换为 Timmy 的 a 和 b,Timmy 替换为 Rann 等等。我应该如何在不硬编码的情况下做到这一点?

标签: pythonpandas

解决方案


您可以简单地使用pandas.DataFrame.shift函数来实现这一点

df[['a','b']] = df[['a','b']].shift(-1)

出去:

    Name    a   b   c   d
0   Lisa    3.0 2.0 1   3
1   Timmy   2.0 3.0 7   2
2   Rann    1.0 6.0 1   5
3   Bob     NaN NaN 3   4

推荐阅读