Я новичок в 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
Как упоминалось в комментарии @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
Я не совсем понимаю ваш код. Но это возможно. Здесь второе, если состояние никогда не достигнет. вам нужно поменять местами, если условия