查找连续相似值的最大值

Roh*_*a K 5 python dataframe python-3.x pandas

我有一个像这样的数据框:

               timestamp  Order     Price  Quantity
0    2019-10-09 09:15:42      0  27850.00      2040
1    2019-10-09 09:15:42      0  27850.00      1980
2    2019-10-09 09:15:53      0  27860.85      1800
3    2019-10-09 09:16:54      0  27860.85      2340
4    2019-10-09 09:18:48      0  27860.85      1500
5    2019-10-09 09:21:08      0  27979.00      1840
6    2019-10-09 09:21:08      0  27979.00      2020
7    2019-10-09 09:21:12      0  27850.00      1800
8    2019-10-09 09:21:15      0  27850.00      1580
9    2019-10-09 09:21:21     35  28000.00      1840
10   2019-10-09 09:21:23     34  28000.00      1800
11   2019-10-09 09:28:17      0  28035.00      2020
12   2019-10-09 09:28:18      0  28035.00      1960
13   2019-10-09 09:28:18      0  28035.00      1920
14   2019-10-09 09:28:24      0  28035.00      1940
15   2019-10-09 09:28:24      0  28035.00      1960
16   2019-10-09 09:28:25      0  28000.00      2140
17   2019-10-09 09:28:25      0  28000.00      2020
18   2019-10-09 09:28:26      0  28000.00      2120
Run Code Online (Sandbox Code Playgroud)

我想检查连续价格值是否相同,然后返回带有最大数量值的行。

我的结果数据框如下:

               timestamp  Order     Price  Quantity
0    2019-10-09 09:15:42      0  27850.00      2040
3    2019-10-09 09:16:54      0  27860.85      2340
6    2019-10-09 09:21:08      0  27979.00      2020
7    2019-10-09 09:21:12      0  27850.00      1800
9    2019-10-09 09:21:21     35  28000.00      1840
11   2019-10-09 09:28:17      0  28035.00      2020
16   2019-10-09 09:28:25      0  28000.00      2140
Run Code Online (Sandbox Code Playgroud)

PS:结果表中的价格值27850.00在此处再次出现在第7行中,将被视为独立行。同样也适用于28000.00

Stu*_*art 4

首先创建一个price_group列来标识具有相同价格的连续行(如本答案中所示)。

price_group = (df.Price != df.Price.shift()).cumsum()
Run Code Online (Sandbox Code Playgroud)

然后按此列对行进行分组,并找到每组具有最大数量的行(如这些 答案中所示)。

result = df.loc[df.Quantity.groupby(price_group).idxmax()]
Run Code Online (Sandbox Code Playgroud)