熊猫获得元素直到价值变化

M S*_*les 3 python dataframe python-2.7 pandas

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

e1    e2
1     15
1     16
1     17
0     14
0     13
0     14
1     16
1     15
Run Code Online (Sandbox Code Playgroud)

在这里,我想要前三个元素,然后是接下来的三个元素,然后是最后两个元素.我想知道是否有一种熊猫的方法.

fir*_*ynx 7

您需要在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
Run Code Online (Sandbox Code Playgroud)

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

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

groups = df.groupby("e5")
Run Code Online (Sandbox Code Playgroud)

并对群组执行您的操作