我有一个pandas dataframe df,列为“x_center”,“width”,“confidence”等。它们都具有浮点值。我已经计算了另一个名为“relative_xc_diff”的列,它是“x_center”值相对于“width”值的相对差异。
x_centers = df["x_center"].values
relative_xc_diff = (abs(x_centers[1:] - x_centers[:-1]) / df["width"].values[:-1]) * 100
df["relative_xc_diff"] = 0
df["relative_x_diff"].values[1:] = relative_xc_diff
现在,我需要检查是否对于任何一对行,“relative_xc_diff”< 50,如果是这种情况,我需要只保留“confidence”较大的行,并删除置信度较低的行。
如果我的初始数据框架是这样的:
x_center y_center width height confidence relative_xc_diff
0 0.28197 0.30739 0.11030 0.28363 0.83297 0.000000
1 0.41412 0.32434 0.11954 0.27971 0.84027 119.809610
2 0.59346 0.34406 0.10318 0.28965 0.83406 150.025096
3 0.71342 0.36437 0.10287 0.28662 0.78227 116.262842
4 0.13095 0.70592 0.12195 0.27470 0.86141 566.219500
5 0.18598 0.71642 0.10878 0.27158 0.77353 45.125051
6 0.45247 0.75308 0.10018 0.28254 0.76669 244.980695
7 0.57028 0.77230 0.09996 0.28853 0.81539 117.598323
8 0.60460 0.78803 0.10151 0.28281 0.82202 34.333733
9 0.80243 0.80597 0.10614 0.29262 0.77144 194.887203
10 0.96391 0.77255 0.07218 0.44827 0.30487 152.138685
我需要删除索引为5和7的行(注意,“relative_xc_diff”的第一个值没有意义,所以我需要忽略它)
1条答案
按热度按时间blmhpbnm1#
使用
boolean indexing
,将第一个值设置为True
,并链接另一个掩码以测试confidence
的差异。如果False
通过移位和链条件测试先前的值,对于按位AND
使用&
,对于按位OR
使用|
:它是如何工作的: