首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何把这段熊猫代码翻译成火星雨

如何把这段熊猫代码翻译成火星雨
EN

Stack Overflow用户
提问于 2022-11-30 18:23:53
回答 1查看 37关注 0票数 0

下面的代码片段是用Pandas编写的。

代码语言:javascript
复制
grouped = df.groupBy('episode_id')
get_entropy = lambda x: entropy(x.value_counts(), base=2)
ops = dict()
ops.update({f:('entropy',get_entropy) for f in categorical_features})
df = grouped.agg(ops)

我如何将其转换为与Pyspark兼容的等效代码?

我无法使用PySpark提供的agg函数找到解决方案。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2022-12-01 21:38:08

既然没有人知道答案,我就公布我的个人解决方案。

代码语言:javascript
复制
def compute_entropy(x):
    counter = collections.Counter(x)
    probs = [counter[item]/len(x) for item in sorted(counter.keys())]
    ent = 0.
    for i in probs:
        ent -= i * math.log(i, 2)
    return ent #entropy(probs,base=2)/1.0
compute_entropy_udf = F.udf(compute_entropy, T.DoubleType())
entropy_cols = [compute_entropy_udf(F.collect_list(x)).alias('entropy_' + x) for x in categorical_features]
df1 = df.groupBy('episode_id').agg(*entropy_cols)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74632516

复制
相关文章

相似问题

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