Python 熊猫-排除数值列为NaN的行

Python 熊猫-排除数值列为NaN的行,python,pandas,data-science,Python,Pandas,Data Science,在熊猫的数据帧中,有些列是数值的,有些行的其中一个数值列是NaN的值 我知道如何选择以下数字列: df.select_dtypes(include=np.number) 但如何排除其中一个数值列为NaN的行 很抱歉,我以前的描述可能不清楚,所以我添加了更多细节来澄清。希望能更清楚 假设数据帧如下所示: 有四列:A、B、C和D。A和C的数据类型是Object,B和D的数据类型是Float A(Object) B(Float)C(Object) D(Float) Apple N

在熊猫的数据帧中,有些列是数值的,有些行的其中一个数值列是NaN的值

我知道如何选择以下数字列:

df.select_dtypes(include=np.number)
但如何排除其中一个数值列为NaN的行

很抱歉,我以前的描述可能不清楚,所以我添加了更多细节来澄清。希望能更清楚

假设数据帧如下所示: 有四列:A、B、C和D。A和C的数据类型是Object,B和D的数据类型是Float

A(Object)   B(Float)C(Object)   D(Float)
Apple       NaN     String1     1.0
Orange      2.0     NaN         3.0
Banana      4.0     String2     5.0
NaN         1.0     String3     2.0
Pear        NaN     String4     3.0
Melon       2.0     String5     NaN
我们将只删除一些数值列(float)为NaN的行,而不应删除一些非数值列(Object)为NaN的行

最终结果如下:

A(Object)   B(Float)C(Object)   D(Float)
Orange      2.0     NaN         3.0
Banana      4.0     String2     5.0
NaN         1.0     String3     2.0
我正在考虑使用lambda和管道。 任何能给出提示的人都会非常感激

非常感谢

让我们试试:

数据

df = pd.DataFrame({'A': [1,np.nan,-2,0,0], 'B': [0, 0, 0, 3, -2], 'C' : [0, 0, -2, np.nan, 0], 'D': [0, -3, 2, 1, -2]} )  
解决方案

df1=df.dropna(0)
df=pd.DataFrame({'A':[1,np.nan,-2,0,0],'B':[0,0,0,3,-2],'C':[0,0,-2,np.nan,0],'D':[0,-3,2,1,-2])

df.dropna(就地=真)


0是默认轴,出于效率考虑,首选inplace,因为不复制数据帧。

这是否回答了您的问题?使用
子集
df.dropna(子集=['B(Float)','D(Float)'))
。感谢您的回复。但是,该代码似乎会删除所有有NAN的行,但是它不考虑数据类型为数字的列,例如浮点。例如,如果一行有一列,则值为NaN,但如果此列的数据类型为非数字,例如object,则不应删除该值。感谢您的回复。但是,该代码似乎会删除所有有NAN的行,但是它不考虑数据类型为数字的列,例如浮点。例如,如果一行有一列,则该列的值为NaN,但如果该列的数据类型为非数字(如object),则不应删除该列。