左移条件 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
我的 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