熊猫-排除数字列为NaN

时间:2020-10-10 23:40:02

标签: python pandas data-science

在Pandas的数据框中,某些数字列,而某些行具有这些数字列之一,即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

我们将只删除那些数字列(浮点数)为NaN的行,而不删除那些非数字列(对象)为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和管道。 任何可以提示的人都会非常感激!

非常感谢!

2 个答案:

答案 0 :(得分:1)

尝试:

数据

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)

答案 1 :(得分: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(inplace = True)

0是默认轴,出于效率考虑,首选inplace-不制作数据框的副本。

相关问题