首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Pandas groupBy到PySpark groupBy

从Pandas groupBy到PySpark groupBy
EN

Stack Overflow用户
提问于 2017-03-14 02:08:23
回答 1查看 5.7K关注 0票数 4

考虑一下星火DataFrame,在这里我们有很少的列。目标是对其执行groupBy操作,而不将其转换为Pandas DataFrame。等价的Pandas groupBy代码如下所示:

代码语言:javascript
复制
def compute_metrics(x):
    return pd.Series({
        'a': x['a'].values[0],
        'new_b': np.sum(x['b']),
        'c': np.mean(x['c']),
        'cnt': len(x)
    })

data.groupby([
    'col_1',
    'col_2'
]).apply(compute_metrics).reset_index()

我打算用PySpark来写这个。到目前为止,我在PySpark上已经想出了类似的东西

代码语言:javascript
复制
gdf = df.groupBy([
    'col_1',
    'col_2'
]).agg({
    'c': 'avg',
    'b': 'sum'
}).withColumnRenamed('sum(b)', 'new_b')

但是,我不知道如何进行'a': x['a'].values[0]'cnt': len(x)。我曾想过使用来自from pyspark.sql import functionsfrom pyspark.sql import functions,但这让我对Column object is not Callable印象深刻。知道如何完成上述转换吗?谢谢!

更新任何列上执行count操作以获得cnt是否有意义?说我这么做:

代码语言:javascript
复制
gdf = df.groupBy([
    'col_1',
    'col_2'
]).agg({
    'c': 'avg',
    'b': 'sum',
    'some_column': 'count'
}).withColumnRenamed('sum(b)', 'new_b')
  .withColumnRenamed('count(some_column)', 'cnt')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-14 02:31:17

我有一个玩具解决方案使用PySpark函数sumavgcountfirst注意到在这个解决方案中使用Spark2.1。希望这能帮点忙!

代码语言:javascript
复制
from pyspark.sql.functions import sum, avg, count, first

# create toy example dataframe with column 'A', 'B' and 'C'
ls = [['a', 'b',3], ['a', 'b', 4], ['a', 'c', 3], ['b', 'b', 5]]
df = spark.createDataFrame(ls, schema=['A', 'B', 'C'])

# group by column 'A' and 'B' then performing some function here
group_df = df.groupby(['A', 'B'])
df_grouped = group_df.agg(sum("C").alias("sumC"), 
                          avg("C").alias("avgC"), 
                          count("C").alias("countC"), 
                          first("C").alias("firstC"))
df_grouped.show() # print out the spark dataframe
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42776610

复制
相关文章

相似问题

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