Обновить фрейм данных, используя условие if на основе двух столбцов

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных student и я хочу обновить значение столбца pass как fail, где имя студента — Том, а возраст — 10.? Поскольку я новичок в программировании. Кто-нибудь, пожалуйста, может подсказать мне, что не так в этом коде? это не работает.

 import pandas as pd
data = [['tom', 10,'True'], ['nick', 15,'True'], ['juli', 14,'True']]
df = pd.DataFrame(data, columns = ['Name', 'Age','Pass'])

df

def result(df):
  if(df['Name']=='tom') and (df['Age']==10)):
  return 'Fail'
df2['Passs']=df2.apply(result,axis=1)
  

Комментарии:

1. Откуда df2 взялось? Вы никогда не объявляли df2 копией df

Ответ №1:

Попробуйте это

 df.loc[df.Name.eq('tom') amp; df.Age.eq(10), 'Pass'] = 'Fail'
print(df)
  

Вывод:

    Name  Age  Pass
0   tom   10  Fail
1  nick   15  True
2  juli   14  True
  

Ответ №2:

 import pandas as pd

data = [['tom', 10,'True'], ['nick', 15,'True'], ['juli', 14,'True']]
df = pd.DataFrame(data, columns = ['Name', 'Age','Pass'])

def myfunc(row):
    if (row.Name == 'tom') and( row.Age == 10) :
        return "Fail"
    else:
        return row.Pass

df.loc[:, 'Pass'] = df.apply(myfunc, axis = 1)
print(df)