У меня есть следующий Dataframe в Python, где «data» = полный набор данных, состоящий из 2 столбцов строк, «Description» и «Category».
«dataTrain» является подмножеством «data»
"catBag" - это список всех слов, использованных в 'Description' из строк определенной 'Category'
"catDict" - это список всех слов, используемых в 'Description 'из строк всех других категорий.
"catUnique" возвращает мне все слова, которые являются уникальными для конкретной категории.
Вложенный цикл заменяет текст' Description 'только словамикоторые уникальны для категории строки.
classNames = sorted(list(set(dataTrain['Category'])))
catUnique = [[] for _ in range(len(classNames))]
dataTemp = dataTrain
for i in range(len(classNames)):
catBag = set()
data2 = dataTrain.loc[data['Category'] == classNames[i]]
data2['Description'].str.lower().str.split().apply(catBag.update)
catDict = set()
data3 = dataTrain.loc[data['Category'] != classNames[i]]
data3['Description'].str.lower().str.split().apply(catDict.update)
catUnique[i] = list(catBag-catDict)
for j in range(len(data2)):
if len(catUnique[i]) > 0:
data22 = data2
dataTemp.at[data22.index[j], 'Description'] = " ".join(list(set(data22.at[data22.index[j], 'Description'].lower().split()) & set(catUnique[i])))
Однако, выполнение этого кода обновляет текст описания dataTrain, несмотря на то, что на него нет ссылок.Даже когда я изменяю его таким образом, чтобы dataTrain не использовался в качестве входных данных, он все равно обновляется.
Эта проблема означает, что в слове data3 отсутствует больше слов, поскольку неуникальные слова удаляются из ранее обработанных категорий.
Я думаю, что это связано со строками data2 ['Description']. Str.lower (). Str.spl ......, но не уверен, как это исправить.