@Speakermen

Как в pandas искать по двум фразам и более?

Две фразы и более не ищет( Или нужно сперва данные разнести по столбцам? Если данные из 3 магазинах добавятся и характеристики

Intel Core i9-11900K BOX [LGA 1200, 8 x 3.5 ГГц, L2 - 4 МБ, L3 - 16 МБ, 2хDDR4-3200 МГц, Intel UHD Graphics 750, TDP 125 Вт]

def readCsv():
    df = pd.read_csv('data.csv')
    df.columns = ["name", "price", "image", "link"]
    # print(df.to_string())
    print(df[df.name.str.contains('i3|oem', regex=True, case=False)]) i3 ищет


readCsv()
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
И так вы создаете фрейм из csv файла, затем присваиваете имена колонкам. Это первое место распечатайте фрейм и посмотрите что выглядит так как вы ожидаете.

Затем исходя из вашего кода вы хотите ВЫБРАТЬ подсет данных по критерию наличия в поле колонки name подстроки 'i3' или 'oem'. То есть если любая из этих подстрок находится в поле колонки name вы выбираете весь этот ряд.

И так код ваш в принципе верный, если задача это та которую я указал. Вы конечно можете импортировать re, и добавить параметр, flags=re.IGNORECASE. Но в целом на сколько я помню нюансы разницы между case=False нет работать должно и так и так.

https://pandas.pydata.org/docs/reference/api/panda... вот ссылка на документацию (возможно вы ее открывали), там есть пример на поиск одной или более подстрок, и он естественно работает (но вы все так и сделали).

Подумайте эту ли задачу вы решаете, может другую, и приходит ли фрейм в том виде в котором вы ожидаете.

df[df.name.str.contains('i3|oem', regex=True, case=False)])

Вот это ваш код выберет все строки у которых в колонке name поле содержит подстроку 'i3' ИЛИ 'oem' и не важно в каком регистре (нижнем или верхнем).
вот слепил игрушечный маленький фрейм
df = pd.DataFrame({
    'name':['23i3f','dOemf','25','s2f5','df5'],
    'amount':[1,2,3,4,5]
})

print(df[df.name.str.contains('i3|oem',regex=True,flags=re.IGNORECASE)])

И он работат, как и ожидается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы