我正在使用Pandas的大型数据框,我需要拥有所有元素,直到一个值发生变化。例如:
e1 e2
1 15
1 16
1 17
0 14
0 13
0 14
1 16
1 15
这里我想要前三个元素,然后是接下来的三个元素,然后是最后两个元素。 我想知道是否有一种熊猫的方法。
答案 0 :(得分:5)
您需要对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")
并对群组执行操作