Я использую Python / pandas в качестве источника данных для загрузки и управления кадром данных из листа Excel.Я создаю столбец «RollProd» на основе значений в столбце «Продукт».
Рассматриваемые строки, которые так сильно замедляют мой запрос, были ранее:
colsearch = ['FC4', 'NC4', 'IC4', 'RGB']
finaldf['RollProd'] = np.where(finaldf['Product'].str.contains(r'\b(?:{})\b'.format('|'.join(colsearch)), case=False, na=False), 'C4', 'C3')
, чтопроверяет, содержат ли записи в столбце «Продукт» «C3» или «C4», а затем соответственно заполняет «RollProd».
Это было быстро, но после добавления большего количества продуктов (мне нужно было больше, чемtrue / false result) Я решил использовать маски:
mask_0 =((finaldf['Product'].str.contains('C4', case=False, na=False)) | (finaldf['Product'].str.contains('RGB', case=False, na=False)))
mask_1 = (finaldf['Product'].str.contains('CON', case=False, na=False))
mask_2 = (finaldf['Product'].str.contains('C3', case=False, na=False))
mask_3 = (finaldf['Product'].str.contains('MIX', case=False, na=False))
finaldf.loc[mask_0, 'RollProd'] = 'C4'
finaldf.loc[mask_1, 'RollProd'] = 'C5+'
finaldf.loc[mask_2, 'RollProd'] = 'C3'
finaldf.loc[mask_3, 'RollProd'] = 'MIX'
Это работает так же быстро, когда я запускаю скрипт самостоятельно, но когда я меняю запрос PowerBI, загрузка занимает несколько часов.Есть ли лучший метод, чем маска, или что-то неэффективное с моим кодом?