【问题标题】:Left shift with condition in pandas在熊猫条件下左移
【发布时间】:2021-07-21 11:11:34
【问题描述】:

我的 csv 文件有一些问题,我通过 pandas 库尝试了几种解决方案,但没有一个对我有用,我想左移到 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 问题吗?

提前致谢!

【问题讨论】:

  • 你能用df.to_dict()发布上述数据框吗?
  • 并且不要将您的列命名为% 3,这太痛苦了

标签: python pandas database csv data-science


【解决方案1】:

你想要这个吗?

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

【讨论】:

  • @Nk03 好答案。您可以检查一次条件并将结果存储在变量中,而不是检查两次isin 条件。然后您可以使用该变量来选择所需的行。
猜你喜欢
  • 2018-07-16
  • 2020-12-18
  • 2022-12-11
  • 2020-11-20
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2019-04-11
  • 1970-01-01
相关资源
最近更新 更多