我有一个这样的数据框:
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
非常感谢您的帮助 !!
相关分类