我有这样一个数据集:
df
+-----------------+---------+----------+---+
|part-id | msgid| date |duration|
+-----------------+---------+----------+---
|RDZ0L2227686| 743|2020-07-02| 2593|
|RDZ0L2227686| 734|2020-07-01| 4|
|RDZ0L2227687| 742|2020-07-02| 3|
|RDZ0L2227687| 737|2020-07-02| 669|
|RDZ0L2227687| 738|2020-07-02| 1099|
|RDZ0L2227687| 733|2020-07-01| 50|
|RDZ0L2227688| 740|2020-07-02| 5924|
|JTZ0L2227688| 741|2020-07-02| 8199|
|JTZ0L2227688| 739|2020-07-02| 190|
|RDZ0L2227688| 736|2020-07-02| 1841|
|RDZ0L2227689| 735|2020-07-02| 2173|
|JTZ0L2227686| 744|2020-07-02| 482|
我想计算duration列的平均值和标准差,并将这两列添加到输入Dataframe中。所以是最终的 df.columns
应该是: date,mean,standdev
假设我申请了,我就是这么做的 df.cache()
以及 df
是一个非常大的Dataframe:
df1 = df.groupBy('date').agg(F.mean("duration")).agg(F.stddev("duration"))
df2 = df.groupBy('date').agg(F.mean("duration")).agg(F.mean("duration"))
df3 = join(df1,df2) on date #columns `date,mean,stddev`
df = join(df,df3) on date #columns `date,mean,stddev`
你能帮我一个忙吗?这样我就可以在一行中计算出平均值和标准差,而不是两次调用df,并以更有效的方式完成整个过程?
1条答案
按热度按时间k10s72fa1#
假设您使用Dataframe
df
使用以下架构和行您可以在一行中获得所需的用例