我知道如何从包含所有空值或单个null的数据文件中删除一行,但是可以根据指定的一组列的空值抛出一行吗?
例如,说我正在处理包含地理信息(城市、纬度和经度)的数据,还有许多其他领域。我想保留至少包含city或lat值的行,但删除三个值都为空的行。
我很难在熊猫文档中找到这个功能。任何指导都将不胜感激。
最佳答案
您可以使用pd.dropna
,但不使用how='all'
和subset=[]
,而是可以使用thresh
参数在删除行之前要求行中的最小NAS数。在城市中,long/lat示例中,athresh=2
将起作用,因为我们仅在3个NAS的情况下下降。使用maxu建立的伟大数据示例,我们可以
## get the data
df = pd.read_clipboard()
## remove undesired rows
df.dropna(axis=0, subset=[['city', 'longitude', 'latitude']], thresh=2)
这将产生:
In [5]: df.dropna(axis=0, subset=[['city', 'longitude', 'latitude']], thresh=2)
Out[5]:
city latitude longitude a b
0 aaa 11.1111 NaN 1 2
1 bbb NaN 22.2222 5 6
3 NaN 11.1111 33.3330 1 2