当前位置: 首页 > 面试题库 >

将数据框添加到Spark中的列表

巫马修为
2023-03-14
问题内容

我试图dataframes基于一个的数据创建“ n”
。我正在检查columnin的Integer值,dataframe并循环执行sql语句以创建与列中dataframes一样多的“ n”
Integers

这是我的代码:

val maxvalue = spark.sql("SELECT MAX(column4) as maxval FROM mydata").collect()(0).getInt(0)
for( i <- 0 to maxvalue){
         var query = "SELECT column1,colum2,colum3 FROM mydata WHERE column4 = "+ i
         val newdataframe = spark.sql(query)
         //add dataframe to List

}

我需要创建“ n”,dataframes但我不知道如何List在循环之前声明类型并在for内填充。

现有dataframe数据类型:

// +------------+------------+------------+------------+
// |     column1|     column2|     column3|     column4|
// +------------+------------+------------+------------+
// |      String|      Double|         Int|         Int|
// +------------+------------+------------+------------+

新的dataframes数据类型:

// +------------+------------+------------+
// |     column1|     column2|     column3|     
// +------------+------------+------------+
// |      String|      Double|         Int|
// +------------+------------+------------+

问题答案:

您可以创建一个可变列表并填充它:

val dfs = mutable.ArrayBuffer[DataFrame]()
for( i <- 0 to maxvalue){
  val query = "SELECT column1,colum2,colum3 FROM mydata WHERE column4 = "+ i
  val newdataframe = spark.sql(query)
  dfs += newdataframe
}

但是更好的方法(不使用可变数据结构)是将整数列表 映射 到DataFrames列表中:

val dfs: Seq[DataFrame] = (0 to maxvalue).map { i => 
  spark.sql("SELECT column1,colum2,colum3 FROM mydata WHERE column4 = " + i)
}


 类似资料:
  • 很容易将列表列表转换为数据帧: 但是我如何将df转换回列表列表呢?

  • 问题内容: 我想知道如何在Spark(Pyspark)中实现以下目标 初始数据框: 结果数据框: 我通常使用以下方法设法将新列“追加”到数据框: 但是,我不知道如何为新列实现这种“行移位”,以便新列具有上一行的字段值(如示例中所示)。我也无法在API文档中找到有关如何通过索引访问DF中特定行的任何内容。 任何帮助,将不胜感激。 问题答案: 您可以如下使用窗口功能 但是有一些重要的问题: 如果您需要

  • 假设我有一个数据框 和列名称列表 如何将新列添加到以零为值的数据帧中?

  • 问题内容: 将空列添加到pandas对象的最简单方法是什么?我偶然发现的最好的东西是 有没有那么不合常理的方法? 问题答案: 如果我理解正确,则应填写作业:

  • 我有一个来自excel电子表格的数据框,其中我找到了每个域出现的频率。我想添加域频率计数到它的相应域。 下面是查找频率并尝试将其添加到相应域的代码。 当我从数据帧打印出频率时:

  • 问题内容: 我有一些像这样的数据框: A中值 的 可能范围仅为0到7 。 另外,我有一个8个元素的列表,如下所示: 如果A列中的元素是 n ,我需要将List中的第 n 个元素插入新列,例如’D’。 如何一口气做到这一点而又不遍历整个数据框? 产生的数据框如下所示: 注意:数据框很大,迭代是最后一个选项。但是如果需要的话,我也可以将其他数据结构(如dict)排列在“ List”中的元素上。 问题答