У меня есть Dataframe, который в настоящее время выглядит следующим образом:
image source label
bookshelf A [flora, jar, plant]
bookshelf B [indoor, shelf, wall]
bookshelf C [furniture, shelf, shelving]
cactus A [flora, plant, vine]
cactus B [building, outdoor, tree]
cactus C [home, house, property]
cars A [parking, parking lot, vehicle]
cars B [car, outdoor, tree]
cars C [car, motor vehicle, vehicle]
Я хотел бы получить количество дубликатов label
s для каждого source
на image
, то есть:
- для книжной полки
image
, источники B и C имеют общую метку "полка" (B + = 1; C + =1) - для
image
кактуса , источники не имеют одинаковых ярлыков - для
image
автомобилей , источники B и C имеют общую метку "автомобиль" (B + = 1; C + = 1), а источники A и C имеют общую метку "транспортное средство"(A + = 1; C + = 1)
Объектом ответа будет количество раз, которое источники делят метками.В приведенном выше примере (1) увеличит число B и C на 1 каждый, а (3) увеличит значения B и C считает по 1 каждый, а A и C считает по 1 каждый:
{ 'A': 1, 'B': 2, 'C': 3 }
Воспроизводимый пример:
from pandas import DataFrame
df = DataFrame({
'image': ['bookshelf', 'bookshelf', 'bookshelf',
'cactus', 'cactus', 'cactus',
'cars', 'cars', 'cars'],
'source': ['A', 'B', 'C',
'A', 'B', 'C',
'A', 'B', 'C'],
'label': [
['flora', 'jar', 'plant'],
['indoor', 'shelf', 'wall'],
['furniture', 'shelf', 'shelving'],
['flora', 'plant', 'vine'],
['building', 'outdoor', 'tree'],
['home', 'house', 'property'],
['parking', 'parking lot', 'vehicle'],
['car', 'outdoor', 'tree'],
['car', 'motor vehicle', 'vehicle']]
},
columns = ['image', 'source', 'label']
)
Хотя обычно имеется 3 метки на источник / изображение, это не гарантируется.
Есть идеи о том, как мне добиться этого с хорошей производительностью?У меня есть несколько миллионов записей для обработки, как это ...