【问题标题】:Pandas get elements until value changesPandas 获取元素直到值发生变化
【发布时间】:2015-09-16 22:02:49
【问题描述】:

我正在使用 Pandas 处理一个大型数据框,我需要在其中拥有所有元素,直到一个值发生变化。例如:

e1    e2
1     15
1     16
1     17
0     14
0     13
0     14
1     16
1     15

这里我想要前三个元素,然后是接下来的三个,然后是最后两个。 我想知道是否有 Pandas 的方法。

【问题讨论】:

    标签: python python-2.7 pandas dataframe


    【解决方案1】:

    您需要对 DataFrame 进行一些转换才能获得所需的信息。

    我会这样做:

    df["e3"] = df["e1"].shift(1)
    df["e4"] = df["e1"] != df["e3"]
    df["e5"] = df["e4"].cumsum()
    df
    
        e1  e2  e3      e4      e5
    0   1   14  NaN     True    1
    1   1   15  1       False   1
    2   1   15  1       False   1
    3   0   16  1       True    2
    4   0   1   0       False   2
    5   0   15  0       False   2
    6   1   15  0       True    3
    7   1   16  1       False   3
    

    了解 e5 现在如何唯一地命名每个组。

    现在我们可以使用 groupby 函数来获取每个组,如下所示:

    groups = df.groupby("e5")
    

    并对组执行您的操作

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 2021-08-02
      • 2022-10-24
      • 2021-12-23
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多