[Использование Python 3, требуется Pandas]
Было бы хорошо увидеть образец ваших фактических данных, однако, я предполагаю, что ваш фрейм данных будет иметь образец, как показано ниже (Пожалуйста, исправьте меня, если этоэто не так):
+-----+----------------------------------------+
|index|content |
+-----+----------------------------------------+
|0 |the phone is heating but not lagging |
|1 |the phone is not heating and not lagging|
+-----+----------------------------------------+
Теперь мы создаем функцию для использования в качестве лямбды следующим образом:
def get_difference_of_keywords(content_string, searchfor, opposite):
searchfor_matches = len([keyword for keyword in searchfor if keyword in content_string])
opposite_matches = len([keyword for keyword in opposite if keyword in content_string])
difference = searchfor_matches - opposite_matches
if not difference == 0:
return str(difference)
return content_string
При этом используется понимание списка Python для получения количества совпадений'searchfor' и 'противоположный' затем возвращает разницу, если разница не равна нулю, или исходное входное предложение, если разница равна нулю.
Примечание. Я преобразовал возвращаемое число из разности выше нуля в строку, чтобы убедиться, что в новых столбцах нет смешанных типов данных.Это необязательно и зависит от вас.
Затем мы применяем вышеуказанное:
df['get_difference_result'] = df.apply(
lambda row: get_difference_of_keywords(row['content'], searchfor, opposite),
axis=1
)
, что приведет к следующему:
+-----+----------------------------------------+----------------------------------------+
|index|content |get_difference_result
|
+-----+----------------------------------------+----------------------------------------+
|0 |the phone is heating but not lagging |1 |
|1 |the phone is not heating and not lagging|the phone is not heating and not lagging|
+-----+----------------------------------------+----------------------------------------+