Выбор строк в пандах, где строковое слово содержится в столбце

Я новичок в pandas, и у меня возникли проблемы с выбором любой строки, в которой столбец «Категория» содержит строку «Изолированный».

Я пробовал .str.contains('Insulated') и binned[binned['Category'].isin(['Insulated Down', 'Insulated Synthetic'])]. Это возвращается с NaN или не выделяет ни одной строки. Я не уверен, хочу ли я сделать неправильно.

Любая помощь очень ценится, спасибо.

Ниже код группирует расположение бункера:

binned = bin[~bin['Bin Location'].isin(['WH 2', '*WH3*'])].groupby('Bin Location').agg({'Quantity On Hand' : 'sum', 'Category' : 'unique'}).reset_index().sort_values(by='Quantity On Hand', ascending=False)

Выбор строк в пандах, где строковое слово содержится в столбце

Я ожидал, что при этом будут выбраны все места бункеров, в которых категория содержит «Утепленный пух» и «Утепленный синтетический материал».

Выбор строк в пандах, где строковое слово содержится в столбце

Я думаю, что ваш фрейм данных содержит список в столбцах, поэтому вам нужно сначала разобрать список, чтобы проверить каждый элемент в списке с помощью .str. Пример... df = pd.DataFrame({'col1':[['A', 'B', 'C'],['E', 'F', 'G']]}) входной фрейм данных. Тогда попробуйте это... df[df.explode('col1')['col1'].str.contains('A').groupby(leve‌​l=0).any()]

Scott Boston 13.08.2024 22:17

Чтобы расширить превосходный подход @Scott Boston для решения вашей проблемы с двумя строками («Изолированная нижняя» и «Изолированная синтетическая»), вы можете использовать код типа: df2 = df[df.explode('col1')['col1'].str.contains('A|F').groupby(le‌​vel=0).any()]], который использует оператор ИЛИ.

user19077881 14.08.2024 00:34
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Значения в столбце 'Category' представляют собой списки, поэтому возможное решение — использовать apply на axis=1 и проверять каждый элемент в каждом списке:

import pandas as pd

df = pd.DataFrame(
    {"Quantity": [1, 2], "Category": [["Bikepacking", "Hats"], ["Insulated Down"]]}
)

m = df.apply(lambda x: any("Insulated" in e for e in x["Category"]), axis=1)
out = df[m]
   Quantity          Category
1         2  [Insulated Down]

Другие вопросы по теме