Хорошо, вот в чем дело. Я работаю с большим количеством фреймов данных и массивов панд. Часто мне нужно соединить значение из одного кадра со значением из другого, в идеале в конечном итоге объединить информацию в один кадр.
Скажем, я смотрю на файлы изображений. Там есть набор информации, специфичной для каждого файла. Иногда есть определенные типы графических файлов, которые совместно используют одну и ту же информацию. Простой пример:
FILEPATH, TYPE, COLOR, VALUE_I,<br>
/img2.jpg, A, 'green', 0.6294<br>
/img45.jpg, B, 'green', 0.1846<br>
/img87.jpg, A, 'blue', 34.78<br>
Часто эта информация индексируется по типу / цвету / значению и т. Д. И передается в какую-то другую функцию, которая дает мне еще один важный вывод, скажем, VALUE_II. Но я не могу объединить его непосредственно с исходным фреймом данных, потому что индексы не будут совпадать, либо из-за характера вывода, либо из-за того, что я передал только часть фрейма.
Или другая ситуация: я узнаю, что к изображениям определенного ТИПА прикреплено определенное значение, поэтому я делаю словарь типов и их значение. Опять же, этот столбец не существует, поэтому в этом случае я бы использовал iterrows () для перехода вниз по фрейму, чтобы увидеть, соответствует ли тип определенному ключу, и добавляет ли он его в массив. Затем, в конце концов, я преобразую этот массив в массив данных и объединяю его с оригиналом.
Вот худший преступник. До 1800 строк в каждом кадре занимает FOREVER .:
newColumn = []
for index, row in originalDataframe.iterrows():
for indx, rw in otherDataframe.iterrows():
if row['filename'] in rw['filepath']:
newColumn.append([rw['VALUE_I'],rw['VALUE_II'], rw['VALUE_III']])
newColumn = pd.DataFrame(newColumn, columns = ['VALUE_I', 'VALUE_II', 'VALUE_III'])
originalDataframe = pd.concat([originalDataframe, newColumn], axis=1)
Решения приветствуются!