左移条件 pandas

Left shift with condition in pandas

我的 csv 文件有一些问题,我已经通过 pandas 库尝试了几种解决方案,但 none 对我有用,我想左移到 3 列以防万一其中一个出现特定代码(在本例中为 11 或 22),例如,这将是我的输入:

code name % code 2 name 2 % 2 code 3 name 3 % 3
11 John 34 44 Rob 23 33 Peter 15
22 Ken 45 33 Peter 45 44 Rob 25
33 Peter 34 66 Abraham 37 77 Harry 67
11 John 45 77 Harry 39 88 Mary 20

我期待这样的事情:

code name % code 2 name 2 % 2 code 3 name 3 % 3
44 Rob 23 33 Peter 15
33 Peter 45 44 Rob 25
33 Peter 34 66 Abraham 37 77 Harry 67
77 Harry 39 88 Mary 20

知道如何使用 pandas 解决我的问题吗?

提前致谢!

你想要这个吗?

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