python - 如何对 pyspark 中的一组列进行分桶?

标签 python apache-spark pyspark

我正在尝试对 5k 数据集中包含“道路”一词的列进行分桶。并创建一个新的数据框。

我不知道该怎么做,这是我已经尝试过的:

from pyspark.ml.feature import Bucketizer

spike_cols = [col for col in df.columns if "road" in col]

for x in spike_cols :

    bucketizer = Bucketizer(splits=[-float("inf"), 10, 100, float("inf")],
                        inputCol=x, outputCol=x + "bucket")

bucketedData = bucketizer.transform(df)

最佳答案

要么在循环中修改df:

from pyspark.ml.feature import Bucketizer

for x in spike_cols :
    bucketizer = Bucketizer(splits=[-float("inf"), 10, 100, float("inf")],
                    inputCol=x, outputCol=x + "bucket")
    df = bucketizer.transform(df)

或使用管道:

from pyspark.ml import Pipeline
from pyspark.ml.feature import Bucketizer 

model = Pipeline(stages=[
    Bucketizer(
        splits=[-float("inf"), 10, 100, float("inf")],
        inputCol=x, outputCol=x + "bucket") for x in spike_cols
]).fit(df)

model.transform(df)

关于python - 如何对 pyspark 中的一组列进行分桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51402369/

相关文章:

python - 使用 python 解析以字节形式传入的 api 响应

python - 为什么二维 NumPy 数组的 boolean 索引会产生一维数组?

python - 如何仅在不是整数时显示小数点?

scala - Spark MLLib线性回归模型截距始终为0.0?

scala - Jodatime Scala 和序列化日期时间

apache-spark - 在 pyspark 中查找并删除匹配的列值

python - 让 libsass-python 使用系统 libsass 库而不是编译它

hadoop - 尝试从hdfs读取文件时Apache Spark错误(输入路径不存在)

machine-learning - PySpark 中的 KMeans 聚类

pyspark - 权限_拒绝 : User does not have USE CATALOG on Catalog '__databricks_internal'