Создайте несколько столбцов в фрейме данных на основе одного и того же условия

Я новичок в Python, и я пытаюсь создать несколько столбцов в фрейме данных на основе одного условия оператора if за раз. Я создал функцию определения, подобную приведенной ниже, чтобы вернуть 2 значения для каждого оператора if со вторым оператором if, вложенным в первый, а затем применил функцию к фрейму данных для создания 4 новых столбцов. Очевидно, это неверно, и надеемся получить помощь или другие варианты для достижения того же результата. Спасибо!

def group(df):
  if df['a'] == 'one':
    low1 = 10
    high1 = 60

    if df['b'] == 'two':
    low2 = 20
    high2 = 70

    return low1, high1, low2, high2

df['low1', 'high1', 'low2', 'high2'] = df.apply(group, axis=1)

И в результате получается такой фрейм данных ...

 a   b    low1   high1   low2  high2
one        10     60     
one  two   10     60       20    70

Я не совсем понимаю ваш код. Но это возможно. Здесь второе, если состояние никогда не достигнет. вам нужно поменять местами, если условия

PushpikaWan 27.10.2018 04:35
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
272
1

Ответы 1

Как упоминалось в комментарии @Lucefer, если первое условие истинно, оно никогда не достигнет второго условия. Итак, замена операторов if может сработать для вас.

def group(df):
     if df['a'] == 'one' & df['b'] == 'two':
        low2 = 20
        high2 = 70
        return low2, high2

    if df['a'] == 'one':
        low1 = 10
        high1 = 60
        return low1, high1

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