У меня есть следующий фрейм данных под названием «files_to_export»:
|Assignee |otherColumns...|
["Samsung", "Apple", "Apple Inc."]
["Honda Tech", "Honda Motors", "General Motors", "Huawei"]
У меня есть еще один список под названием «Компании», который содержит компании, которые мне интересны в моих данных, структура списка следующая:
Companies=['Ford','General motors','Mazda',..........]
Итак, я хочу, чтобы в моих данных были строки, содержащие хотя бы одну компанию в моем списке компаний (под содержанием я подразумеваю смысл регулярного выражения, другими словами, если есть строка с «Ford global tech», тогда я хочу это включены в мои данные, потому что в нем есть слово Форд.
Я написал следующий код, но я не собираю никаких данных:
output = file_to_export[file_to_export['Assignee'].str.contains('|'.join(companies), case=False, na=False).count(True) > 0]
Фактический результат - пустой фрейм данных без строк в выходном фрейме данных.
Ожидаемый результат - получить фрейм данных со строками разных компаний в выходном кадре данных.
Какие-либо предложения? Спасибо за вашу помощь, и я хочу, чтобы я был ясен в своем вопросе!
Настройка данных
files_to_export = pd.DataFrame({'Assignee':[['Samsung','Apple','Apple Inc.'],['Honda Tech','Honda Motors','General Motors']],
'other_col':[1,2]})
companies = ['Ford','General motors','Mazda']
# Filter df
# The pattern is a case of or where matching any of the individuals strings will work
pattern = '|'.join(companies) # 'Ford|General motors|Mazda'
# convert the column of lists to a column of comma separated strings
# then check for string containment
files_to_export[files_to_export.Assignee.apply(lambda x: ','.join(x)).str
.contains(pattern,
case=False)]
Этот код генерирует следующее предупреждение: UserWarning: Этот шаблон имеет группы соответствия. Чтобы получить группы, используйте str.extract. функция возврата(я, *args, **kwargs)
Я на самом деле не понимаю вашего шаблона, почему вы добавляете '()'
Скобки нужны для группировки слов, но здесь они не нужны. Я только что отредактировал ответ, чтобы просто присоединиться к разделению |
, которое работает так же, только без предупреждения.
Я только что отредактировал сообщение, пример - это однострочный код, с помощью которого я пытаюсь отфильтровать свои файлы dataframe files_to_export!