python - 在熊猫条件下左移
问题描述
我的 csv 文件有一些问题,我通过 pandas 库尝试了几种解决方案,但没有一个对我有用,我想左移到 3 列,以防其中一个出现特定代码(在这种情况下11 或 22),例如,这将是我的输入:
代码 | 姓名 | % | 代码 2 | 名称 2 | % 2 | 代码 3 | 名称 3 | % 3 |
---|---|---|---|---|---|---|---|---|
11 | 约翰 | 34 | 44 | 抢 | 23 | 33 | 彼得 | 15 |
22 | 肯 | 45 | 33 | 彼得 | 45 | 44 | 抢 | 25 |
33 | 彼得 | 34 | 66 | 亚伯拉罕 | 37 | 77 | 哈利 | 67 |
11 | 约翰 | 45 | 77 | 哈利 | 39 | 88 | 玛丽 | 20 |
我期待这样的事情:
代码 | 姓名 | % | 代码 2 | 名称 2 | % 2 | 代码 3 | 名称 3 | % 3 |
---|---|---|---|---|---|---|---|---|
44 | 抢 | 23 | 33 | 彼得 | 15 | |||
33 | 彼得 | 45 | 44 | 抢 | 25 | |||
33 | 彼得 | 34 | 66 | 亚伯拉罕 | 37 | 77 | 哈利 | 67 |
77 | 哈利 | 39 | 88 | 玛丽 | 20 |
知道如何解决我的熊猫问题吗?
提前致谢!
解决方案
你想要这个吗?
mask = df['code'].isin([11,22])
df.loc[mask] = df.loc[mask].shift(-3,axis=1)
输出 -
code name % code 2 name 2 % 2 code 3 name 3 % 3
0 44.0 Rob 23.0 33.0 Peter 15.0 NaN NaN NaN
1 33.0 Peter 45.0 44.0 Rob 25.0 NaN NaN NaN
2 33.0 Peter 34.0 66.0 Abraham 37.0 77.0 Harry 67.0
3 77.0 Harry 39.0 88.0 Mary 20.0 NaN NaN NaN
推荐阅读
- mysql - 具有相关列值的表的最佳数据库表设计
- javascript - 如何使用 javascript 检查产品是否为空 Laravel
- salesforce - 如何在 Salesforce 中创建自定义错误页面
- r - 在ggplot中用组在点之间画线
- android - 使用“react-native-firebase v6”将数据从通知传递到它打开的应用程序的最佳方法是什么?
- csv - 有没有一种简单的方法可以将镶木地板文件直接加载到 Cassandra 中?
- excel - VBA中是否有for-if循环的替代方法?
- deep-learning - Jetson nano 上的 Onnx 到 tensorrt arcface 模型转换错误(分段故障核心转储)
- azure - 将元数据添加到 Azure 函数中的跟踪
- python - 使用按钮小键盘在输入小部件中输入数据