na()。drop()和filter(col.isNotNull)之间的区别(Apache Spark)

时间:2016-02-18 09:27:41

标签: apache-spark apache-spark-sql

df.na().drop()df.filter(df.col("onlyColumnInOneColumnDataFrame").isNotNull() && !df.col("onlyColumnInOneColumnDataFrame").isNaN()) df Apache Spark Dataframe之间的语义是否存在差异?

或者如果第一个不在null列中null(不是字符串null,而只是onlyColumnInOneColumnDataFrame值)返回!isNaN()并且第二个呢?

编辑:也添加了onlyColumnInOneColumnDataFrameDataframe是给定Integer中唯一的列。我们说它的类型是<html><head><link rel="stylesheet" href="http://openlayers.org/en/v3.2.0/css/ol.css" type="text/css"> <script src="http://openlayers.org/en/v3.13.0/build/ol.js" type="text/javascript"></script> <link rel="stylesheet" href="ol3-layerswitcher-master/src/ol3-layerswitcher.css" type="text/css"/> <script src="ol3-layerswitcher-master/src/ol3-layerswitcher.js"></script> <style> #map{ position: absolute; width: 100%; height: 75%; } </style> </head> <body> <h1> ol3-layerswitcher</h1> <div id="map"></div> <script> var map = new ol.Map({ layers: [new ol.layer.Group({ 'title': 'Base maps', layers: [ new ol.layer.Tile({ title: 'Water color', type: 'base', visible: false, source: new ol.source.Stamen({ layer: 'watercolor' }) }), new ol.layer.Tile({ title: 'OSM', type: 'base', visible: false, source: new ol.source.OSM() }), new ol.layer.Tile({ title: 'Satellite', type: 'base', visible: true, source: new ol.source.MapQuest({layer: 'sat'}) }) ] }), new ol.layer.Group({ title: 'Overlays', layers: [ new ol.layer.Tile({ title: 'Countries', source: new ol.source.TileWMS({ url: 'http://demo.opengeo.org/geoserver/wms', params: {'LAYERS': 'ne:ne_10m_admin_1_states_provinces_lines_shp'}, serverType: 'geoserver' }) }) ] }) ], target: 'map', view: new ol.View({ center: ol.proj.transform([2.1, 41.50], 'EPSG:4326', 'EPSG:3857'), zoom: 8 }) }); var layerSwitcher = new ol.control.LayerSwitcher({ tipLabel: 'Leyenda' }); map.addControl(layerSwitcher); layerSwitcher.showPanel(); </script></body></html>

3 个答案:

答案 0 :(得分:36)

使用df.na.drop()删除包含任何 null或NaN值的行。

使用df.filter(df.col("onlyColumnInOneColumnDataFrame").isNotNull())删除仅在列onlyColumnInOneColumnDataFrame中为空的行。

如果你想要达到同样的目的,那就是df.na.drop(["onlyColumnInOneColumnDataFrame"])

答案 1 :(得分:0)

在一种情况下,我必须选择具有NA或空值或> = 0的记录。我可以只使用合并函数,而不能使用上面的三个函数。

rdd.filter("coalesce(index_column, 1000) >= 0") 

答案 2 :(得分:-2)

我不知道你是否得到了答案。但这应该有效:

df.na.drop(subset=["onlyColumnInOneColumnDataFrame"])

甚至:

df.na.drop(how = 'any')