У меня есть список слов (около 1000 слов), я называю их отрицательными словами.
['CAST','ARTICLES','SANITARY','JAN','CLAUSES','SPECIAL','ENDORSEMENT']
Я скоро сделаю информационный кадр из этого списка слов.
У меня также есть датафрейм, который выглядит как -
FileName PageNo LineNo GOODS_DESC
1 17668620 TM000004 36 CAST ARTICLES IRON SANITARY
59 17668620 TM000014 41 CRATES
60 17668620 TM000014 42 CAST ARTICLES IRON
61 17668620 TM000014 49 JAN ANIMAL AND VEGETABLE
63 17668620 TM000016 49 SETTLING AGENT
65 17668620 TM000016 29 JAN
66 17668620 TM000016 32 CLAUSES SPECIAL CONDITIONS WARRANTIES
67 17668620 TM000016 37 CARGO ISM ENDORSEMENT
69 17668620 TM000017 113 QUANTITY DECLARED IRON CRATES
Я хочу удалить негативные слова из фрейма данных (как можно быстрее).и получите уточненный фрейм данных.Таким образом, фрейм данных выглядит следующим образом - фрейм данных из этого списка слов.
У меня также есть фрейм данных, который выглядит как -
FileName PageNo LineNo GOODS_DESC
1 17668620 TM000004 36 IRON
59 17668620 TM000014 41 CRATES
60 17668620 TM000014 42 IRON
61 17668620 TM000014 49 ANIMAL AND VEGETABLE
63 17668620 TM000016 49 SETTLING AGENT
65 17668620 TM000016 29 NaN
66 17668620 TM000016 32 CONDITIONS WARRANTIES
67 17668620 TM000016 37 CARGO ISM
69 17668620 TM000017 113 QUANTITY DECLARED IRON CRATES
В настоящее время мой подход заключается в том, что я перебираюфрейм данных, беря каждую строку и разделяя ее и проверяя, находится ли разбитое слово в списке отрицательных слов или нет. Если его там нет, тогда я создаю новую строку, объединяя слова и добавляя ее в фрейм данных.
for rows in df.itertuples():
a = []
flat_list = []
a.append(rows.GOODS_DESC)
flat_list = [item.strip() for sublist in a for item in sublist.split(' ') if item.strip()]
flat_list = list(sorted(set(flat_list), key=flat_list.index))
flat_list = [i for i in flat_list if i.lower() not in negative_words_list]
if(not flat_list):
df.drop(rows.Index,inplace=True)
continue
s=' '.join(flat_list)
df.loc[rows.Index,'GOODS_DESC']=s
df['GOODS_DESC'] = df['GOODS_DESC'].str.upper()
Единственная проблема этого подхода в том, что он слишком медленный.
Если у вас есть какие-либо подсказки, логика делится.Может кто-нибудь показать мне, как этот процесс может быть выполнен с использованием pandas dataframe за меньшее время.