使用来自其他列的索引对 DataFrame 进行切片

我有一个这样的数据框:


index   value   idxmin  idxmax

0       300     nan     nan

1       200     nan     nan

2       100     nan     nan

3       200     0       2

4       300     1       2

5       400     1       3

6       500     2       5

7       600     4       5

8       700     4       7

9       800     5       8

10      900     5       8

11      800     7       9

12      700     8       10

13      600     10      12

14      500     12      13

15      400     12      14

16      500     12      15

17      400     13      15

18      500     13      16

19      600     15      17

20      700     15      19

我想创建一个新列(最大值),它将返回行范围的“值”列的最大值。示例:对于第 9 行,第 5 行到第 8 行的“值”的最大值为 800。


我已经制作了这段代码,它实际上正在运行但效率不高


df['maxvalue'] = df.apply(lambda x : (df['value'].loc[x['idxmin']:x['idxmax']].max(), axis=1)

您是否有更有效的代码来执行该功能?


我期望的结果(最后一栏):


index   value   idxmin  idxmax  maxvalue

0       300     nan     nan     nan

1       200     nan     nan     nan

2       100     nan     nan     nan

3       200     0       2       300

4       300     1       2       200

5       400     1       3       200

6       500     2       5       400

7       600     4       5       400

8       700     4       7       600

9       800     5       8       700

10      900     5       8       700

11      800     7       9       800

12      700     8       10      900

13      600     10      12      900

14      500     12      13      700

15      400     12      14      700

16      500     12      15      700

17      400     13      15      600

18      500     13      16      600

19      600     15      17      500

20      700     15      19      600

非常感谢您的帮助 !!


GCT1015
浏览 161回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python