在pyspark中划分数据帧
Dividing dataframes in pyspark
跟进 问题和数据框,我正在尝试转换它
进入这个(我知道它看起来一样,但请参阅下一行代码以查看不同之处):
在pandas中,我使用了行代码teste_2 = (value/value.groupby(level=0).sum())
,在pyspark中我尝试了几种解决方案;第一个是:
df_2 = (df/df.groupby(["age"]).sum())
但是,我收到以下错误:TypeError: unsupported operand type(s) for /: 'DataFrame' and 'DataFrame'
第二个是:
df_2 = (df.filter(col('Siblings'))/gr.groupby(col('Age')).sum())
但是还是不行。谁能帮帮我?
希望我没有正确理解问题。您似乎想将计数除以每个年龄组的计数总和。
from pyspark.sql import functions as F, Window
df2 = df.groupBy('age', 'siblings').count().withColumn(
'count',
F.col('count') / F.sum('count').over(Window.partitionBy('age'))
)
df2.show()
+---+--------+-----+
|age|siblings|count|
+---+--------+-----+
| 15| 0| 1.0|
| 10| 3| 1.0|
| 14| 1| 1.0|
+---+--------+-----+
跟进
进入这个(我知道它看起来一样,但请参阅下一行代码以查看不同之处):
在pandas中,我使用了行代码teste_2 = (value/value.groupby(level=0).sum())
,在pyspark中我尝试了几种解决方案;第一个是:
df_2 = (df/df.groupby(["age"]).sum())
但是,我收到以下错误:TypeError: unsupported operand type(s) for /: 'DataFrame' and 'DataFrame'
第二个是:
df_2 = (df.filter(col('Siblings'))/gr.groupby(col('Age')).sum())
但是还是不行。谁能帮帮我?
希望我没有正确理解问题。您似乎想将计数除以每个年龄组的计数总和。
from pyspark.sql import functions as F, Window
df2 = df.groupBy('age', 'siblings').count().withColumn(
'count',
F.col('count') / F.sum('count').over(Window.partitionBy('age'))
)
df2.show()
+---+--------+-----+
|age|siblings|count|
+---+--------+-----+
| 15| 0| 1.0|
| 10| 3| 1.0|
| 14| 1| 1.0|
+---+--------+-----+