我有以下代码来生成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/

10-09 19:15