更好的方法来放弃熊猫中的纳米行

时间:2016-04-02 08:08:37

标签: python pandas

我自己找到了一种从熊猫数据帧中删除nan行的方法。如果数据框dat的列x包含nan值,是否有一种更优雅的方法可以删除dat列中具有nan值的x行?

dat = dat[np.logical_not(np.isnan(dat.x))]
dat = dat.reset_index(drop=True)

5 个答案:

答案 0 :(得分:89)

使用dropna

dat.dropna()

如果所有标签都是nan或任何标签为nan

,您可以将param how传递给drop
dat.dropna(how='any')    #to drop if any value in the row has a nan
dat.dropna(how='all')    #to drop if all values in the row are nan

希望能回答你的问题!

编辑1: 如果你想从特定列中删除包含nan值的行,正如J. Doe在下面的回答中所建议的那样,你可以使用以下内容:

dat.dropna(subset=[col_list])  # col_list is a list of column names to consider for nan values.

答案 1 :(得分:23)

如果您希望删除行中的' x'来扩展Hitesh的答案具体是nan,你可以使用子集参数。他的答案会删除其他列也有nans的行

dat.dropna(subset=['x'])

答案 2 :(得分:8)

以防先前答案中的命令不起作用, 试试这个: dat.dropna(subset=['x'], inplace = True)

答案 3 :(得分:0)

bool_series=pd.notnull(dat["x"])
dat=dat[bool_series]

答案 4 :(得分:0)

要删除基于特定列的Nan值的行:

d= pd.DataFrame([[2,3],[4,None]])   #creating data frame
d
Output:
    0   1
0   2   3.0
1   4   NaN
d = d[np.isfinite(d[1])]  #Select rows where value of 1st column is not nan
d

Output:
    0   1
0   2   3.0