简体   繁体   English

删除 2 列的行并从下一行向上移动

[英]Remove rows of 2 columns and shifting up from the next row

How do I remove each row for column a and b and replace a and b from the next row?如何删除 a 和 b 列的每一行并从下一行替换 a 和 b? I am not sure how to do this in an efficient way because I have a big dataset.我不确定如何以有效的方式执行此操作,因为我有一个大数据集。

My dataframe我的数据框

╔═══════════════════════════╗
║ 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   ║
╚═══════════════════════════╝

I want to change it into this我想把它改成这个

╔══════════════════════════════════════════╗
║ 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)   ║
╚══════════════════════════════════════════╝

a and b for Lisa is replaced with Timmy's a and b, Timmy is replaced by Rann and so on. Lisa 的 a 和 b 替换为 Timmy 的 a 和 b,Timmy 替换为 Rann 等。 How should I do this without hard-coding it?如果没有硬编码,我应该如何做到这一点?

You can simply use pandas.DataFrame.shift function to achieve that您可以简单地使用pandas.DataFrame.shift函数来实现

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

Out:出去:

    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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM