Выберите ненулевые строки из определенного столбца в DataFrame и возьмите подвыбор других столбцов

Вопрос:У меня есть dataFrame, у которого есть несколько coulmns, поэтому я выбрал некоторые из своих coulmns, чтобы создать переменную, подобную этой xtrain = df[['Age','Fare', 'Group_Size','deck', 'Pclass', 'Title' ]]. Я хочу отказаться от этих coulmns всех raw'ов, что Coup Survive в основном DataFrame является nan. Лучший ответ: Вы можете передать булевскую маску в df на основе

Вопрос:

У меня есть dataFrame, у которого есть несколько coulmns, поэтому я выбрал некоторые из своих coulmns, чтобы создать переменную, подобную этой xtrain = df[[‘Age’,’Fare’, ‘Group_Size’,’deck’, ‘Pclass’, ‘Title’ ]]. Я хочу отказаться от этих coulmns всех raw’ов, что Coup Survive в основном DataFrame является nan.

Лучший ответ:

Вы можете передать булевскую маску в df на основе notnull() столбца “Выжить” и выбрать интересующие столбцы:

In [2]: # make some data df = pd.DataFrame(np.random.randn(5,7), columns= [‘Survive’, ‘Age’,’Fare’, ‘Group_Size’,’deck’, ‘Pclass’, ‘Title’ ]) df[‘Survive’].iloc[2] = np.NaN df Out[2]: Survive Age Fare Group_Size deck Pclass Title 0 1.174206 -0.056846 0.454437 0.496695 1.401509 -2.078731 -1.024832 1 0.036843 1.060134 0.770625 -0.114912 0.118991 -0.317909 0.061022 2 NaN -0.132394 -0.236904 -0.324087 0.570660 0.758084 -0.176421 3 -2.145934 -0.020003 -0.777785 0.835467 1.498284 -1.371325 0.661991 4 -0.197144 -0.089806 -0.706548 1.621260 1.754292 0.725897 0.860482

Теперь передайте маску loc, чтобы взять строки не NaN:

In [3]: xtrain = df.loc[df[‘Survive’].notnull(), [‘Age’,’Fare’, ‘Group_Size’,’deck’, ‘Pclass’, ‘Title’ ]] xtrain Out[3]: Age Fare Group_Size deck Pclass Title 0 -0.056846 0.454437 0.496695 1.401509 -2.078731 -1.024832 1 1.060134 0.770625 -0.114912 0.118991 -0.317909 0.061022 3 -0.020003 -0.777785 0.835467 1.498284 -1.371325 0.661991 4 -0.089806 -0.706548 1.621260 1.754292 0.725897 0.860482 Ответ №1

Две альтернативы, потому что… ну почему бы и нет?
Оба падают nan до нарезки столбцов. Это два вызова, а не EdChum один вызов.

один

df.dropna(subset=[‘Survive’])[ [‘Age’,’Fare’, ‘Group_Size’,’deck’, ‘Pclass’, ‘Title’ ]]

два

df.query(‘Survive == Survive’)[ [‘Age’,’Fare’, ‘Group_Size’,’deck’, ‘Pclass’, ‘Title’ ]]

Оцените статью
Добавить комментарий