gpt4 book ai didi

python - Spark DF pivot error : Method pivot([class java. lang.String, class java.lang.String]) 不存在

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:04 24 4
gpt4 key购买 nike

我是使用 Spark 数据帧的新手。我正在尝试将 pivot 方法与 Spark(Spark 版本 2.x)一起使用并遇到以下错误:

Py4JError: An error occurred while calling o387.pivot. Trace: py4j.Py4JException: Method pivot([class java.lang.String, class java.lang.String]) does not exist

尽管我在这里将 agg 函数作为 first,但我真的不需要应用任何聚合。

我的数据框是这样的:

+-----+-----+----------+-----+
| name|value| date| time|
+-----+-----+----------+-----+
|name1|100.0|2017-12-01|00:00|
|name1|255.5|2017-12-01|00:15|
|name1|333.3|2017-12-01|00:30|

预期:

+-----+----------+-----+-----+-----+
| name| date|00:00|00:15|00:30|
+-----+----------+-----+-----+-----+
|name1|2017-12-01|100.0|255.5|333.3|

我正在尝试的方式:

df = df.groupBy(["name","date"]).pivot(pivot_col="time",values="value").agg(first("value")).show

我这里的错误是什么?

最佳答案

问题是 pivot 函数中的 values="value" 参数。这应该用于实际值的列表,而不是列名。来自documentation :

values – List of values that will be translated to columns in the output DataFrame.

还有一个例子:

df4.groupBy("year").pivot("course", ["dotNET", "Java"]).sum("earnings").collect()
[Row(year=2012, dotNET=15000, Java=20000), Row(year=2013, dotNET=48000, Java=30000)]

对于问题中的示例,values 应设置为 ["00:00","00:15", "00:30"]。但是,values 参数通常不是必需的(但会使 pivot 更有效),因此您可以简单地更改为:

df = df.groupBy(["name","date"]).pivot("time").agg(first("value"))

关于python - Spark DF pivot error : Method pivot([class java. lang.String, class java.lang.String]) 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com