我知道如何从包含所有空值或单个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

07-24 21:07