在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和管道。 任何可以提示的人都会非常感激!
非常感谢!
答案 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-不制作数据框的副本。