我有一个 Dataframe ,它有几列,所以我选择了其中的一些列来创建这样的变量。
xtrain = df[['Age', 'Fare', 'Group_Size', 'deck', 'Pclass', 'Title']]
我想从这些列中删除主 Dataframe 中Survive列为nan的所有行。
Survive
nan
b5lpy0ml1#
您可以根据'Survive'列的notnull()将布尔掩码传递给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行:
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
tyg4sfes2#
两个选择,因为...为什么不呢?两者都在列切片之前丢弃nan,这是两个调用,而不是EdChum的一个调用。
一个
df.dropna(subset=['Survive'])[ ['Age','Fare', 'Group_Size','deck', 'Pclass', 'Title' ]]
两个
df.query('Survive == Survive')[ ['Age','Fare', 'Group_Size','deck', 'Pclass', 'Title' ]]
uidvcgyl3#
如果将列的子集分配给变量和筛选器,则可能更易于阅读。
notna_msk = df['Survive'].notna() cols = ['Age', 'Fare', 'Group_Size', 'deck', 'Pclass', 'Title', 'Survive'] new_df = df.loc[notna_msk, cols]
此外,如果您已经在OP中从df创建了xtrain,那么您仍然可以使用掩码过滤此 Dataframe ,即使它没有Survive列;只要索引就足够了。
df
xtrain
new_df = xtrain.loc[df['Survive'].notna()]
3条答案
按热度按时间b5lpy0ml1#
您可以根据'Survive'列的
notnull()
将布尔掩码传递给df,并选择感兴趣的列:现在将掩码传递给
loc
,以仅获取非NaN
行:tyg4sfes2#
两个选择,因为...为什么不呢?
两者都在列切片之前丢弃
nan
,这是两个调用,而不是EdChum的一个调用。一个
两个
uidvcgyl3#
如果将列的子集分配给变量和筛选器,则可能更易于阅读。
此外,如果您已经在OP中从
df
创建了xtrain
,那么您仍然可以使用掩码过滤此 Dataframe ,即使它没有Survive
列;只要索引就足够了。