我有以下代码来生成pandas数据帧:
df=pd.DataFrame({'x':[],'y':[],'w':[],'h':[]})
for idx in range(len(contours)):
x, y, w, h = cv2.boundingRect(contours[idx])
df=df.append({'x':x, 'y':y, 'w':w, 'h':h}, ignore_index=True)
生成的数据帧如下:
h w x y
0 17.0 550.0 20.0 370.0
1 16.0 549.0 20.0 341.0
2 5.0 7.0 497.0 288.0
3 31.0 167.0 201.0 271.0
4 30.0 91.0 56.0 263.0
5 11.0 17.0 174.0 251.0
6 3.0 3.0 19.0 251.0
7 3.0 3.0 29.0 248.0
8 67.0 179.0 398.0 234.0
9 32.0 92.0 202.0 234.0
10 21.0 16.0 175.0 231.0
11 11.0 12.0 202.0 218.0
12 11.0 3.0 0.0 216.0
13 3.0 3.0 14.0 211.0
我想获得宽度(w)的最大值2,并返回相应的行:
我可以使用以下代码获得最大2个值:
a=df['w'].nlargest(2)
print(a)
我的问题是如何将行值存储在与最大列值相对应的变量(在我的情况下,x=20.0,y=370.0,h=17.0)中
后续:取w=550,保存x和y在w±5范围内的所有值。我该怎么做?
最佳答案
使用DataFrame.nlargest
-指定用于查找值的列:
df = df.nlargest(2, 'w')
print (df)
h w x y
0 17.0 550.0 20.0 370.0
1 16.0 549.0 20.0 341.0
关于python - 数据框搜索第n大列并存储相应的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54839743/