【发布时间】:2022-12-03 13:36:38
【问题描述】:
我将此代码用于数据框上的枢轴:
df2 = df.groupBy("id").pivot("status").count("status")
df = df.join(df2, on="id", how='left')
但我得到这个错误:TypeError: _api() 采用 1 个位置参数,但给出了 2 个
拜托,我们能帮帮我吗??
【问题讨论】:
我将此代码用于数据框上的枢轴:
df2 = df.groupBy("id").pivot("status").count("status")
df = df.join(df2, on="id", how='left')
但我得到这个错误:TypeError: _api() 采用 1 个位置参数,但给出了 2 个
拜托,我们能帮帮我吗??
【问题讨论】:
当您要计算聚合值时,您可以导入 spark sql 函数:
from pyspark.sql import functions as spark_sql_functions
例如,让我们有下一个数据框:
df.show()
+--------------------+-----------------+------------------+
| country| name| subcountry|
+--------------------+-----------------+------------------+
| Andorra| les Escaldes|Escaldes-Engordany|
| Andorra| Andorra la Vella| Andorra la Vella|
|United Arab Emirates| Umm al Qaywayn| Umm al Qaywayn|
|United Arab Emirates| Ras al-Khaimah| Raʼs al Khaymah|
|United Arab Emirates| Khawr Fakkān| Ash Shāriqah|
|United Arab Emirates| Dubai| Dubai|
...
...
将 agg 函数与 spark sql 函数一起使用:
df_cities = df.groupBy('country', 'subcountry').agg(
spark_sql_functions.count('name').alias('cities')).groupBy('country').agg(
spark_sql_functions.count('subcountry').alias('subcountry'),
spark_sql_functions.sum('cities').alias('cnt')).sort(spark_sql_functions.desc('cnt'))
df_cities.show()
=>
+--------------+----------+----+
| country|subcountry| cnt|
+--------------+----------+----+
| United States| 51|2699|
| India| 35|2443|
| Brazil| 27|1200|
| Russia| 82|1093|
| Germany| 16|1055|
| China| 31| 799|
| Japan| 47| 736|
| France| 13| 633|
| Italy| 20| 571|
...
我希望这个例子有用。
【讨论】: