问题描述:原始数据data总行数是1303638,使用data.drop()后数据总行数是1303638,使用data.na.drop()后数据总行数是0;为啥data.drop()没有丢弃null或nan的数据?
总结:
1)data.drop()如果不传递列名,不会做任何操作;
2)通过以下比较发现,drop是用来丢弃列的,而na.drop是用来丢弃行的;
3)通过以下比较发现,dataframe.drop是直接调用的dataset中drop接口;
4)如果想要调用DataframeNaFunctions中drop接口,需要先利用dataframe.na得到一个DataframeNaFunctions类型变量,然后利用该变量调用DataframeNaFunctions中drop接口。
参考:https://www.cnblogs.com/cc11001100/p/9954862.html
(1)na作用
Dataset中na接口的描述如下

(2)drop
查看DataframeNaFunctions中drop的api接口描述,如下,都是返回一个丢弃含有null/NaN的行后的新dataframe,

查看dataset中有关drop的api,描述如下,返回一个丢弃指定列的dataset

测试:












在Spark中,data.drop()仅用于删除指定列,并不会移除包含null或NaN的行,因此数据行数不变。而data.na.drop()则会删除包含null或NaN值的行,导致所有行被移除。要调用DataFrameNaFunctions的drop接口,需先使用dataframe.na()。测试验证了这一行为。
753

被折叠的 条评论
为什么被折叠?



