【问题标题】: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")
并对组执行您的操作