如何按日汇总多个列[Pyspark]?

时间:2018-08-31 08:08:45

标签: python apache-spark pyspark pyspark-sql

我想将下面的熊猫代码转换为pysaprk。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

但是pysaprk中没有重新映射,请尝试改用groupby:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

但是出错了

d = {'has_discount':'count',
    'clearance':'count',
    'count': ['count', 'sum'],
    'price_guide':'max'}

df.index = timestamp2datetime(df.time_create, unit='ms')
df1 = df.resample('D').agg(d)

df1.columns = df1.columns.map('_'.join)
d1 = {'has_discount_count':'discount_order_count',
    'clearance_count':'clearance_order_count',
    'count_count':'order_count',
    'count_sum':'sale_count',
    'price_guide_max':'price_guide'}

df2 = df1.rename(columns=d1)

Pyspark的聚合似乎不支持d = {'has_discount':'count', 'clearance':'count', 'count': ['count', 'sum'], 'price_guide':'max'} df.select(date_format(from_unixtime(df.time_create/1000),'yyyy-MM-dd').alias('day')).groupby('day').agg(d).show(5) 之类的输入。我该怎么办?

1 个答案:

答案 0 :(得分:1)

df.select所使用的只是一列day,但是在聚合状态下,您使用的是其他列。 您可能想要的是将列day添加到存在的其他列中:

df.withColumn('day', date_format(from...