Я пытаюсь изменить столбец, если некоторые строки находятся в другом столбце в той же строке. Я новичок в Пандах.
Мне нужно изменить цену на некоторые апельсины до 200, но не на цену «Red Orange». Я не могу изменить название "фрукты". Это намного более длинная строка, и я просто сократил ее для удобства.
fruits price
Green apple from us 10
Orange Apple from US 11
Mango from Canada 15
Blue Orange from Mexico 16
Red Orange from Costa 15
Pink Orange from Brazil 19
Yellow Pear from Guatemala 32
Black Melon from Guatemala 4
Purple orange from Honduras 5
Так что конечный результат будет
fruits price
Green apple from us 10
Orange Apple from US 11
Mango from Canada 15
Blue Orange from Mexico 200
Red Orange from Costa 15
Pink Orange from Brazil 200
Yellow Pear from Guatemala 32
Black Melon from Guatemala 4
Purple orange from Honduras 5
Я старался
df.loc[df['fruits'].str.lower().str.contains('orange'), 'price'] = 200
Но это производит 4 предмета, чтобы изменить его цену, а не только 2 предмета.
Я использовал для цикла один раз, и это изменило весь столбец, чтобы изменить его цену.
2 ответа
df.loc[((df['fruits'].str.contains('orange')) & (~df['fruits'].str.contains('Red'))),'price'] = 200
Мы проверяем наличие апельсинов и ~
подтверждаем, что красный цвет отсутствует в строке. Если оба условия выполняются, цена меняется до 200
Вы можете использовать регулярное выражение:
import re
df.loc[df['fruits'].str.lower().str.contains(r'(?<!red) orange', regex = True), 'price'] = 200
(?<!red)
отрицательный взгляд позади. Так что, если за оранжевым есть красный, это не будет соответствовать. Это также гарантирует его второе слово с обязательным пробелом перед словом оранжевый, так что вам не придется беспокоиться о том, что это цвет, описывающий что-то.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.