我有一个df
具有以下结构的数据框:
+-----+-----+-----+-------+
| s |col_1|col_2|col_...|
+-----+-----+-----+-------+
| f1 | 0.0| 0.6| ... |
| f2 | 0.6| 0.7| ... |
| f3 | 0.5| 0.9| ... |
| ...| ...| ...| ... |
我想计算此数据帧的转置,因此看起来像
+-------+-----+-----+-------+------+
| s | f1 | f2 | f3 | ...|
+-------+-----+-----+-------+------+
|col_1 | 0.0| 0.6| 0.5 | ...|
|col_2 | 0.6| 0.7| 0.9 | ...|
|col_...| ...| ...| ... | ...|
我将这两个解决方案绑定在一起,但是它返回的数据框没有指定的使用方法:
方法1:
for x in df.columns:
df = df.pivot(x)
方法2:
df = sc.parallelize([ (k,) + tuple(v[0:]) for k,v in df.items()]).toDF()
我怎样才能解决这个问题。
如果数据足够小以至于可以转置(不以聚合为中心),则可以将其转换为Pandas DataFrame
:
df = sc.parallelize([
("f1", 0.0, 0.6, 0.5),
("f2", 0.6, 0.7, 0.9)]).toDF(["s", "col_1", "col_2", "col_3"])
df.toPandas().set_index("s").transpose()
s f1 f2
col_1 0.0 0.6
col_2 0.6 0.7
col_3 0.5 0.9
如果太大,Spark将无济于事。SparkDataFrame
按行分配数据(尽管本地使用列式存储),因此单个行的大小限于本地内存。
我是pyspark的新手,我来尝试做一些像下面这样的事情,为每个cookie调用一个函数Print细节,然后将结果写入文件。spark.sql查询返回正确的数据,我也可以将其序列化为文件。有人可以帮助每个cookie上的for语句。调用UDF的语法应该是什么,如何将输出写入文本文件? 任何帮助是值得赞赏的。谢谢
有没有办法选择整行作为一列输入到Pyspark过滤器udf中? 我有一个复杂的过滤函数“my_filter”,我想应用于整个数据帧: 但是 引发错误,因为这不是有效的操作。 我知道我可以将数据帧转换为RDD,然后使用RDD的过滤方法,但我不想将其转换为RDD,然后再转换回数据帧。我的数据帧具有复杂的嵌套类型,因此当我尝试再次将 RDD 转换为数据帧时,架构推断将失败。
在从< code>RDD制作< code >数据帧时,我遇到了一个错误。 我收到以下错误: py spark . SQL . utils . parse exception:u " \ nmis matched input ' '应为{'SELECT ',' FROM ',' ADD ',' AS ',' ALL ',' DISTINCT ',' WHERE ',' GROUP ',' BY ',
问题内容: 我在Databricks工作。 我有一个包含500行的数据框,我想创建两个包含100行的数据框,另一个包含剩余的400行。 我尝试了以下操作,但收到错误消息 问题答案: 最初,我误会了,并以为您想分割这些列。如果要选择行的子集,一种方法是使用创建索引列。从文档: 保证生成的ID是单调递增且唯一的,但不是连续的。 您可以使用此ID对数据框进行排序,并使用该ID对其子集进行排序,以确保准确
我是新的spark和python,面临着从元数据文件构建模式的困难,该模式可以应用于我的数据文件。场景:数据文件的元数据文件(csv格式),包含列及其类型:例如: 我已成功将其转换为如下数据帧: 但是当我尝试用这个将其转换为StructField格式时 或 然后使用 我得到以下错误: 一旦我准备好了模式,我想使用createDataFrame来应用于我的数据文件。这个过程必须为许多表完成,所以我不
我有两个数据帧,DF1和DF2,DF1是存储来自DF2的任何附加信息的主机。 假设DF1是以下格式, DF2包含DF1中已经存在的2个条目和两个新条目。(itemId和item被视为一个组,可以被视为连接的键) 我需要合并两个数据框,以便增加现有项目计数并插入新项目。 结果应该是这样的: 我有一种方法可以做到这一点,但不确定这种方法是否有效或正确
这将产生两个记录: 窗口函数对时间序列数据进行分类,而不是执行滚动平均。 是否有一种方法来执行滚动平均值,在此方法中,我将为每行返回一个周平均值,时间周期结束于该行的timestampGMT? 在上面的结果中,2017-03-10的rolling_average是17,因为没有之前的记录。2017-03-15的滚动平均值是15,因为它是2017-03-15的13和2017-03-10的17的平均值