首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使一组列在“火花放电”中?

如何使一组列在“火花放电”中?
EN

Stack Overflow用户
提问于 2018-07-18 12:44:12
回答 2查看 4.6K关注 0票数 6

我试图在一个5k数据集中对包含单词"road“的列进行反求。并创建一个新的数据格式。

我不知道如何做到这一点,以下是我所做的努力:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-18 12:58:14

要么在循环中修改df

代码语言:javascript
复制
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)

或者使用Pipeline

代码语言:javascript
复制
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)
票数 9
EN

Stack Overflow用户

发布于 2021-05-22 13:07:06

由于3.0.0,Bucketizer可以通过设置inputCols参数一次映射多个列。

因此,这变得更容易:

代码语言:javascript
复制
from pyspark.ml.feature import Bucketizer

splits = [-float("inf"), 10, 100, float("inf")]
params = [(col, col+'bucket', splits) for col in df.columns if "road" in col]
input_cols, output_cols, splits_array = zip(*params)

bucketizer = Bucketizer(inputCols=input_cols, outputCols=output_cols,
                        splitsArray=splits_array)

bucketedData = bucketizer.transform(df)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51402369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档