python - 删除 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 等等。我应该如何在不硬编码的情况下做到这一点?
解决方案
您可以简单地使用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
推荐阅读
- java - 从Java中的接口实现泛型方法
- c++ - 在抛出 'std::invalid_argument' 的实例后调用终止 what(): stoi (找不到什么问题)
- web - Webrtc 连接测试 - 未知 API 密钥
- styled-components - 样式化的组件是否被记忆?
- html - 将 div 定位在导航栏中垂直居中并向右
- java - 如何在 Play Framework 2.6 application.conf 中处理加密数据库密码?
- react-native - 有人可以解释一下 Bundle Identifier 是如何在 React Native 中设置的吗?
- java - 当我在枚举中使用属性值时出现 Spring Boot 错误
- mysql - 如果行存在,如何更新非唯一列,否则更新 [MySQL] 中的不同行?
- python - 在后台使用 Fabric 的 Connection.run() 时脚本挂起