当前位置: 首页 > 知识库问答 >
问题:

Python/PySpark中复制dataframe列的最佳实践?

谷梁宁
2023-03-14

谢谢。

共有1个答案

王昊
2023-03-14

我遇到的这个有趣的例子展示了两种方法和更好的方法,并同意另一种答案。这是Scala,而不是pyspark,但同样的原则适用,尽管示例不同。

import org.apache.spark.sql.functions._
import spark.implicits._

val df = Seq(
             ("1","2", "3"),
             ("4", "5", "6"),
             ("100","101", "102")
            ).toDF("c1", "c2", "c3")

这是昂贵的,即withColumn,它为每次迭代创建一个新的DF:

val df2 = df.columns.foldLeft(df) { case (df, col) =>
          df.withColumn(col, df(col).cast("int"))
          }
//df2.show(false)

这样更快。

val df3 = df.select(df.columns.map { col =>
          df(col).cast("int")
          }: _*)
//df3.show(false)
 类似资料:
  • Spark Dataframes有一个方法每次添加一个新列。若要添加多列,需要一个的链。这是做这件事的最佳实践吗? 第二部分,在和的链中使用有哪些权衡? 我在某个地方读到过,在Spark DFs中使用可用的方法总是比推出自己的实现要好。如果我的论点错了,请让我知道。谢谢!欢迎所有的想法。

  • 我有下面的pyspark数据文件。

  • 请为Pandas提供pyspark dataframe替代方案。 另外,我不需要,而是希望检查该列中的distinct值。

  • 有两个,我想删除一个。我该怎么办?

  • 我试图找出在Spark dataframe列中获得最大值的最佳方法。 考虑以下示例: 上面的每一个都给出了正确的答案,但在没有Spark分析工具的情况下,我无法判断哪一个是最好的。 就Spark运行时或资源使用而言,上述哪种方法最有效,或者是否有比上述方法更直接的方法,有任何来自直觉或经验主义的想法?

  • 问题内容: 复制列表的最佳方法是什么?我知道以下方法,哪种更好?还是有另一种方法? 问题答案: 如果要浅拷贝(不复制元素),请使用: 如果要进行深层复制,请使用复制模块: