USER
У меня есть датафрейм, в котором есть столбец, где в каждой ячейке лежит список следующего вида
[{'question': 'Менеджер представился клиенту?',
'description': 'Менеджер не представился клиенту',
'answer': 'negative',
'comment': 'Менеджер не представился клиенту',
'dri_code': ''},
{'question': 'Менеджер выявил основные требования к автомобилю?',
'description': '',
'answer': 'positive',
'comment': '',
'dri_code': ''},
{'question': 'Менеджер назвал адрес автосалона (без вопроса – Вы знаете где мы находимся?)?',
'description': 'Менеджер не назвал адрес автосалона.',
'answer': 'negative',
'comment': 'Менеджер не назвал адрес автосалона.',
'dri_code': ''},
{'question': 'Менеджер проговорил свой добавочный номер телефона?',
'description': 'Менеджер не проговорил свой добавочный.',
'answer': 'negative',
'comment': 'Менеджер не проговорил свой добавочный.',
'dri_code': ''},
{'question': 'Менеджер поблагодарил за звонок?',
'description': '',
'answer': 'positive',
'comment': '',
'dri_code': ''},
...
{'question': 'Менеджер не применял в речи уменьшительно-ласкательные формы и жаргонизмы (девушка, молодой человек, на литье, салон на тряпке, нал, и т.п.)?',
'description': '',
'answer': 'positive',
'comment': '',
'dri_code': ''}]
Мне нужно каждую ячейку проанализировать на наличие в списке элемента где поле question равно значению из моего проверочного списка, если в этом списке есть такой элемент, его нужно удалить (НО НЕ САМ СПИСОК, только элемент с этим значением question)ASSISTANT
Чтобы выполнить такую задачу, вы можете воспользоваться функцией, которая будет проходить по каждой ячейке вашего столбца, анализировать списки словарей и удалять словари, где поле `question` соответствует значению из вашего проверочного списка. Ниже приведен пример кода, как это можно сделать с использованием библиотеки pandas:
```python
import pandas as pd
# Пример датафрейма
data = {
'questions_list': [
[{'question': 'Менеджер представился клиенту?',
'description': 'Менеджер не представился клиенту',
'answer': 'negative',
'comment': 'Менеджер не представился клиенту',
'dri_code': ''},
{'question': 'Менеджер выявил основные требования к автомобилю?',
'description': '',
'answer': 'positive',
'comment': '',
'dri_code': ''}],
[{'question': 'Менеджер назвал адрес автосалона?',
'description': 'Менеджер не назвал адрес автосалона.',
'answer': 'negative',
'comment': 'Менеджер не назвал адрес автосалона.',
'dri_code': ''},
{'question': 'Менеджер проговорил свой добавочный номер телефона?',
'description': 'Менеджер не проговорил свой добавочный.',
'answer': 'negative',
'comment': 'Менеджер не проговорил свой добавочный.',
'dri_code': ''}]
]
}
df = pd.DataFrame(data)
# Список вопросов, которые нужно удалить
questions_to_remove = [
'Менеджер назвал адрес автосалона?',
'Менеджер представился клиенту?'
]
def remove_questions(question_list, questions_to_remove):
# Фильтруем список, удаляя словари с вопросами из проверочного списка
return [q for q in question_list if q['question'] not in questions_to_remove]
# Применяем функцию ко всему столбцу
df['questions_list'] = df['questions_list'].apply(lambda x: remove_questions(x, questions_to_remove))
print(df['questions_list'])
```
В этом коде функция `remove_questions` фильтрует список словарей, удаляя те, у которых значение поля `question` совпадает с элементом из списка `questions_to_remove`. Функция применяется ко всему столбцу `questions_list` с помощью метода `apply`. В результате каждый список в ячейке будет содержать только те элементы, которые не совпадают с вашими условиями.