Как создать функцию, которая будет применяться к условию

Полный нуб здесь, поэтому любая помощь будет очень признательна. Мне нужно создать функцию, которая будет применяться к серии pandas (zipcode) в DataFrame на основе условного значения в другой серии (стране) из того же DataFrame.

Функция, которую я создал

## function for retrieving only numeric characters
num_pattern = '(\d+)'

def numeric(x,y):
    try :
        a = re.search(x,y).group()
    except:
        a = None
    return a

df['zip'] = df['zip'].apply(lambda x: numeric(num_pattern,x)) 

Мне нужно, чтобы эта функция передавалась только в том случае, если значения в моем столбце df['country'] равны 'US'

Вам действительно нужно, чтобы условие было внутри функции? В противном случае вы можете использовать .loc, чтобы ваша функция применялась только к «США».

Juan C 28.05.2019 17:43

это должно сделать это: df['zip'] = df.apply(lambda x: numeric(x.col_1), axis=1)

MEdwin 28.05.2019 17:47

@JuanC, не могли бы вы поделиться примером?

spak 28.05.2019 17:50

Было бы полезно, если бы вы могли отредактировать свой пост, включив в него пример, как показано здесь: stackoverflow.com/help/минимально-воспроизводимый-пример Например, покажите нам образец DataFrame «до» с 3 или 4 строками и 2 или 3 столбцами с помощью df = pd.DataFrame({.... Затем сделайте это снова, создав вручную результат, который вы хотите. (Но также прочитайте связанную статью и примените ее к своему вопросу.) Спасибо!

Mike 28.05.2019 17:53
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете подать заявку на свои строки df:

df['zip'] = df.apply(lambda x: numeric(num_pattern,x['zip']) if x['country']=='US' else x['zip'], axis=1) 

Спасибо, но я получаю это сообщение об ошибке IndexError: ('страна', 'произошло по электронной почте индекса')

spak 28.05.2019 17:58

Даже с параметром axis=1?

F Blanchet 28.05.2019 17:59

ничего себе я идиот, это помогло бы, если бы я прокрутил. Огромное спасибо!

spak 28.05.2019 18:01

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