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。
首先创建一个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)
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |