Я использую метод pythons zip для применения операции фрейма данных pandas к нескольким столбцам Код работает нормально, однако все полученные кортежи печатаются на моем терминале, что затрудняет отладку.
Выписка из функции:
import fuzzywuzzy as fuzz
if 'leven_dist_N' not in self.clust_df.columns:
self.clust_df['leven_dist_N'], self.clust_df['leven_dist_NA'] = zip(
*self.clust_df.apply(self.calcMatchRatio, axis=1))
Применить функцию:
def calcMatchRatio(self, row):
if pd.notnull(row.src_name_short) and pd.notnull(row.reg_name_short):
if pd.notnull(row.src_address_adj) and pd.notnull(row.reg_address_adj):
return int(fuzz.ratio(row.src_name_short, row.reg_name_short)), int(fuzz.ratio(row.src_joinfields, row.reg_joinfields))
else:
return int(fuzz.ratio(row.src_name_short, row.reg_name_short)), int(0)
При срабатывании первого оператора возврата в calcMatchRatio
результат выводится на консоль без дальнейшего перехода по коду.
Значения в объекте - это просто строки, содержащие названия компаний. Пример вывода терминала:
(«Больница Челси амп и Вестминстер и Королевский Марсден нфтс», '')
(Больница "Челси амп", Вестминстер и королевская гавань Марсдена
ярд лондон sw10 0xd англия ',' ')
Строка fuzz.ratio вычисляет расстояние Левенштейна (целое число) между двумя строками в каждом кортеже, но строки по-прежнему печатаются.
Когда я запускал отдельный экземпляр Python:
python3
импорт fuzzywuzzy as fuzz
fuzz.ratio ('lalala', 'lololo')
Выходы
('лалала', 'лололо')
60
Так что я думаю, что проблема связана с пакетом fuzzywuzzy - я действительно не хочу возиться с кодом там, но я, кажется, помню, прежде чем использовать комбинацию множественного применения и zip (пре-рефакторинг), не было такой терминальный спам.