从DataFrame中的特定列中选择非空行,并对其他列进行子选择

13 python pandas

我有一个dataFrame有几个coulmns,所以我选择了一些coulmns来创建一个这样的变量xtrain = df[['Age','Fare', 'Group_Size','deck', 'Pclass', 'Title' ]]我想从这些coulmns中删除所有原始数据,主数据框架中的Survive coulmn是nan.

EdC*_*ica 14

您可以根据notnull()"Survive"列将布尔掩码传递给df 并选择感兴趣的cols:

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
Run Code Online (Sandbox Code Playgroud)

现在传递一个掩码,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
Run Code Online (Sandbox Code Playgroud)


piR*_*red 5

两种选择,因为......为什么不呢?
两者都nan在列切片之前下降。这是两次通话而不是 EdChum 的一次通话。

df.dropna(subset=['Survive'])[
    ['Age','Fare', 'Group_Size','deck', 'Pclass', 'Title' ]]
Run Code Online (Sandbox Code Playgroud)

df.query('Survive == Survive')[
    ['Age','Fare', 'Group_Size','deck', 'Pclass', 'Title' ]]
Run Code Online (Sandbox Code Playgroud)