Python 使用pyspark将TF-IDF特征提取为多列

Python 使用pyspark将TF-IDF特征提取为多列,python,pandas,pyspark,tf-idf,Python,Pandas,Pyspark,Tf Idf,通常,pyspark.ml.feature.IDF返回一个包含SparseVector的输出列。我所需要的只是具有实数值的N列,其中N是在IDF中定义的许多特性(稍后在catboost中使用该数据帧) 我已尝试将列转换为数组 def dense_to_array(v): new_array = list([float(x) for x in v]) return new_array dense_to_array_udf = F.udf(dense_to_array, T

通常,pyspark.ml.feature.IDF返回一个包含SparseVector的输出列。我所需要的只是具有实数值的N列,其中N是在IDF中定义的许多特性(稍后在catboost中使用该数据帧)

我已尝试将列转换为数组

def dense_to_array(v):
      new_array = list([float(x) for x in v])
      return new_array

dense_to_array_udf = F.udf(dense_to_array, T.ArrayType(T.FloatType()))

data = data.withColumn('tf_idf_features_array', dense_to_array_udf('tf_idf_features'))
然后使用Pandas转换为列

data = data.toPandas()
cols = [f'tf_idf_{i}' for i in range(32)]
data = pd.DataFrame(info['tf_idf_features_array'].values.tolist(), columns=cols)
我不喜欢那样,因为我觉得它很慢。有没有办法解决没有熊猫的pyspark问题?

有帮助吗?有帮助吗?