import pandas as pd
import numpy as np
df = pd.DataFrame(
[[4, 7, np.nan, np.nan],
[5, np.nan, 11, 2],
[6, 9, 12, np.nan]],
index=[1, 2, 3],
columns=['a', 'b', 'c', 'd'])
print(f'starting matrix:n{df}')
# create the matrix of true/false NaNs:
null_matrix = df.isnull()
# create the sum of number of NaNs
sum_null_matrix = null_matrix.T.sum().T
# create the query of the matrix
query_null = sum_null_matrix<2
# apply them to your matrix
applied_df = df[query_null]
print(f'query matrix:n{query_null}')
print(f'applied matrix:n{applied_df}')
然后你会得到结果:
starting matrix:
a b c d
1 4 7.0 NaN NaN
2 5 NaN 11.0 2.0
3 6 9.0 12.0 NaN
query matrix:
1 False
2 True
3 True
dtype: bool
applied matrix:
a b c d
2 5 NaN 11.0 2.0
3 6 9.0 12.0 NaN
6条答案
按热度按时间vi4fp9gy1#
使用dropna:
如果所有标签都是NaN或任何标签都是NaN,则可以传递参数
how
以丢弃希望这能回答你的问题!
**编辑1:*如果您只想删除特定列中包含
nan
值的行,正如J.Doe在下面的回答中所建议的,您可以使用以下方法:cgh8pdjw2#
要扩展Hitesh的答案(如果您想删除‘x’特别是NaN的行),可以使用subset参数。他的回答将删除其他列也有nan的行
dojqjjoe3#
以防前面答案中的命令不起作用,试试这个:
dat.dropna(subset=['x'], inplace = True)
juzqafwq4#
suzh9iv85#
要根据特定列的NAN值删除行,请执行以下操作:
3hvapo4f6#
Dropna()可能就是您所需要的全部,但是创建自定义过滤器也可能会有所帮助,或者更容易理解
然后你会得到结果:
有关NaN检查答案:How to check if any value is NaN in a Pandas DataFrame,可能提供更多信息
编辑:dropna()有一个阈值变量,但没有min变量。这个答案适用于当有人需要创建一个‘min nans’或其他一些定制函数时。