pyspark.PandasAPI:正在构造共现矩阵,.dot()不支持将 Dataframe 作为输入

0kjbasz6  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(124)

我正在尝试使用pyspark.pandas API在Databricks上构建我的 Dataframe 的共现矩阵。
我尝试了这种方法来构造矩阵。Constructing a co-occurrence matrix in python pandas
代码在panda中运行良好,但在pyspark中抛出错误。

  1. coocc = psdf.T.dot(psdf)
  2. coocc

我收到此错误

  1. TypeError: Unsupported type DataFrame

我查了文件https://spark.apache.org/docs/latest/api/python/reference/pyspark.pandas/api/pyspark.pandas.DataFrame.dot.html

  1. pyspark.pandas.DataFrame.dot()

将系列作为输入。
我尝试使用psdf.squeeze()将 Dataframe 转换为序列,但它无法将 Dataframe 转换为序列,因为我的 Dataframe 有多个列。
有没有办法把pyspark.pandas.Dataframe变成pyspark.pandas.Series?或者pyspark.pandas中构造共生矩阵的不同方法

qgzx9mmu

qgzx9mmu1#

我使用csr_matrix作为 Dataframe 来解决它, Dataframe 的值为'1'和'0'

  1. import scipy.sparse as sp
  2. psdfx = sp.csr_matrix(psdf.astype(int).values)
  3. psdfc = ptdfx.T * psdfx
  4. psdfc.setdiag(0)
  5. coocc = ps.DataFrame(psdfc.todense(), columns=psdf.columns, index=psdf.columns)
  6. coocc

参考编号:https://stackoverflow.com/a/37840528/19642283

相关问题