我有两个数据帧,其中df1.bbox_col
和df2.bbox_col
是它们的列之一,如下所示:
df1.bbox_col:
bbox_col
0 [20, 30, 40, 50]
1 [5, 15, 48, 90]
2 [111, 72, 51, 18]
df2.bbox_col:
bbox_col
0 [26, 62, 72, 56]
1 [2, 18, 43, 95]
2 [123, 90, 48, 51]
3 [156, 76, 65, 97]
4 [65, 76, 87, 32]
5 [54, 78, 34, 56]
我有一个函数area
,它接受两个边界框numpy数组并返回一个浮点值。
def area(bbox1, bbox2):
some operations...
return float_val
我想将此函数应用于两列的所有元素,并且如果返回的值大于thresh
,即float_val > thresh
,则在数据框中更新df1[index1][bbox_col] = df2[index2][bbox_col]
。
否则,如果float_val < thresh
,则将df2.iloc[index2]
的行附加到df1
。
我尝试通过遍历两个数据帧的行并进行如下比较来实现此目的:
for index1, row1 in df1:
for index2, row2 in df2:
if area(row1.bbox_col, row2.bbox_col) > thresh:
df1.iloc[index1]['bbox_col'] = row2.bbox_col
else:
df1 = df1.append(df2.row)
所以基本上,我想做的是检查特定元素是否符合条件并替换它,或者将第二个数据帧的行附加到第一个。
我正试图摆脱以下两个问题:
我当时正在考虑使用df.apply()之类的函数来执行此操作,但是它仅占用一个数据帧。
最后,我正在寻找类似this的东西,但是on=
是pd.merge
中的一个函数...