Как изменить значение в столбце в зависимости от того, находится ли определенная комбинация строк в других столбцах в той же строке? (Панды) - PullRequest
0 голосов
/ 10 ноября 2018

Я новичок в Pandas и программировании в целом. Я использую Анаконду, если это имеет значение.

У меня на руках следующее:

Печально известный набор данных о выживании Титаника.

Итак, моя идея состояла в том, чтобы найти кадр данных и найти строки, в которых в столбце «Имя» будет строка «Миссис». И в то же время «возраст» будет NaN (в этом случае значение в столбце «Возраст» необходимо изменить на 32). Кроме того, при нахождении «пропустить» в ячейке значения в двух других столбцах равны нулю.

Моя главная проблема в том, что я не знаю, как сказать Пандам заменить значение в той же строке или удалить всю строку.

    #I decided to collect the indexes of rows with the "Age" value == NaN to further use the
#indices to search through the "Names column." 

        list_of_NaNs = df[df['Age'].isnull()].index.tolist()

            for name in df.Name:
                if "Mrs." in name and name (list_of_NaNs):#if the string combination "Mrs."
        #can be found within the cell...
                    df.loc['Age'] = 32.5 #need to change the value in the
        #column IN THE SAME ROW
                elif "Miss" in name and df.loc[Parch]>0: #how to make a
        #reference to a value IN THE SAME ROW???
                    df.loc["Age"] = 5
                elif df.SibSp ==0 and Parch ==0:
                    df.loc["Age"] = 32.5
                else:
                    #mmm... how do I delete entire row so that it doesn't 
        #interfere with my future actions?

1 Ответ

0 голосов
/ 10 ноября 2018

Вот как вы можете проверить, присутствуют ли «Мисс» или «Миссис» в столбцах имен:

df.name.str.contains('Mrs')

Таким образом, следующее даст вам строки, где в имени указано «Mrs», а Age - NaN

df[(df.name.str.contains('Mrs')) & (df.age.isna())]

С этого момента вы можете играть с разными кейсами и заданиями.

Надеюсь, это поможет:)

И удалить строки с NaN в столбце возраста:

df = df.drop(df[df.age.isna()].index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...