【发布时间】:2021-01-28 13:31:12
【问题描述】:
我有两个这样的 DataFrame:
df_cells = pd.DataFrame({
'left': [1095, 257],
'top': [1247, 1148],
'right': [1158, 616],
'bottom': [1273, 1176]
})
df_text = pd.DataFrame({
'words': ['Hello', 'world', 'nice day', 'have a'],
'left': [1097, 1099, 258, 259],
'top': [1248, 1249, 1156, 1153],
'right': [1154, 1156, 615, 614],
'bottom': [1269, 1271, 1175, 1172]
})
df_cells 包含图像上短语的边界框坐标,df_text 包含图像上的单词及其边界框坐标。
我创建了一个元组列表,其中短语和单词的边界框根据 left、top、right、bottom 值匹配,如下所示:
overlap = [(0,0), (1,0), (2, 1), (3, 1)]
其中元组的第一个元素是df_text 的索引值,第二个元素是df_cells 的匹配索引值。
我想选择,将基于重叠的行组合成一个新的数据框,如下所示:
Words df_cells.left df_cells.top df_cells.right df_cells.bottom
Hello 1095 1247 1158 1273
world 1095 1247 1158 1273
Have a 257 1148 616 1176
nice day 257 1148 616 1176
然后将具有相同left、top、right、bottom 的单词连接起来,如下所示:
Words df_cells.left df_cells.top df_cells.right df_cells.bottom
Hello world 1095 1247 1158 1273
Have a nice day 257 1148 616 1176
不胜感激。
【问题讨论】:
-
我不明白“匹配”的定义。你能用数学方法说明匹配条件吗?
标签: python python-3.x pandas dataframe