Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除pyspark数据帧中值为字符串的行_Python_Apache Spark_Pyspark_Pyspark Dataframes - Fatal编程技术网

Python 删除pyspark数据帧中值为字符串的行

Python 删除pyspark数据帧中值为字符串的行,python,apache-spark,pyspark,pyspark-dataframes,Python,Apache Spark,Pyspark,Pyspark Dataframes,我正在尝试使用ApacheSpark对存储在MongoDB数据库中的地理空间数据使用KMeans。数据的格式如下: DataFrame[decimalLatitude: double, decimalLongitude: double, features: vector] 代码如下所示,其中inputdf是数据帧 vecAssembler = VectorAssembler( inputCols=["decimalLatitude", "decimalLongi

我正在尝试使用ApacheSpark对存储在MongoDB数据库中的地理空间数据使用KMeans。数据的格式如下:

DataFrame[decimalLatitude: double, decimalLongitude: double, features: vector]
代码如下所示,其中
inputdf
是数据帧

vecAssembler = VectorAssembler(
                inputCols=["decimalLatitude", "decimalLongitude"],
                outputCol="features")
inputdf = vecAssembler.transform(inputdf)
kmeans = KMeans(k = 10, seed = 123)
model = kmeans.fit(inputdf.select("features"))
数据集中似乎有一些空字符串,因为我得到以下错误

com.mongodb.spark.exceptions.MongoTypeConversionException: Cannot cast STRING into a IntegerType (value: BsonString{value=''})
我试着用

issuedf = inputdf.where(inputdf.decimalLatitude == '')
issuedf.show()

但是我得到了与上面相同的类型转换错误。我也尝试了
df.replace
,但是我得到了相同的错误。如何删除存在该值的所有行?

此问题可以通过在加载数据时提供数据类型来解决,如下所示:

inputdf = my_spark.read.format("mongo").load(schema=StructType(
    [StructField("decimalLatitude", DoubleType(), True),
     StructField("decimalLongitude", DoubleType(), True)]))

这可确保所有值均为
DoubleType
。现在可以使用
inputdf.dropna()

删除空值。请包含导致问题出错的代码。@cronoik,我进行了编辑。该错误一定是由于
功能
属性中的字符串引起的。然而,由于它是由decimallatude和decimallongtude创建的,因此我相信问题一定在其中一个或两个方面。同样,代码也适用于同一父数据集的不同子集。您有一个dataframe,其模式可能为[int,int],但某些行具有字符串值。我相信您必须在创建数据帧之前过滤字符串值(即使将其转换为无也可以),否则您将无法使用该数据帧。看一看这里接受的。