我自己找到了一种从熊猫数据帧中删除nan行的方法。如果数据框dat
的列x
包含nan值,是否有一种更优雅的方法可以删除dat
列中具有nan值的x
行?
dat = dat[np.logical_not(np.isnan(dat.x))]
dat = dat.reset_index(drop=True)
答案 0 :(得分:89)
使用dropna:
dat.dropna()
如果所有标签都是nan或任何标签为nan
,您可以将paramhow
传递给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