有没有办法在pyspark数组函数中放入多列?(FP生长准备)

2024-09-30 19:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有疾病症状的数据框,我想在整个数据框上运行FP Growt。FP Growt需要一个数组作为输入,它使用以下代码:

dfFPG = (df.select(F.array(df["Gender"], 
                        df["Polyuria"], 
                        df["Polydipsia"], 
                        df["Sudden weight loss"], 
                        df["Weakness"], 
                        df["Polyphagia"],
                        df["Genital rush"],
                        df["Visual blurring"],
                        df["Itching"]).alias("features")

from pyspark.ml.fpm import FPGrowth
fpGrowth = FPGrowth(itemsCol="features", minSupport=0.3, minConfidence=0.2)
model = fpGrowth.fit(dfFPG)

model.freqItemsets.show(20,truncate=False)

功能列表更长,如果我必须更改df的名称,我必须使用查找和替换。我知道我可以使用F.col("Gender")而不是df["Gender"],但是有没有一种方法可以一次将F.array()中的所有列都放进去,并且能够排除像df["Age"]这样的少数列? 或者,有没有其他我不知道的为FP Growt准备分类特征的有效方法


Tags: 数据方法代码dfmodel数组genderarray
1条回答
网友
1楼 · 发布于 2024-09-30 19:35:47

您可以使用df.columns获取所有列名,并将它们全部放入array

import pyspark.sql.functions as F

dfFPG = df.select(F.array(*[c for c in df.columns if c not in ['col1', 'col2']]).alias("features"))

相关问题 更多 >