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

向csv中写入带有头部的空DF

单于旭东
2023-03-14

当您尝试使用emptyDF创建csv文件时,Spark会创建一个没有头的空文件,即使header选项是true(header=true)

import ss.implicits._
val df = List((1, "kishore", 22000)).toDF("id", "name", "salary")
val emptyDF = df.where("id != 1")
emptyDF.show()

emptyDF.write.option("header", true).csv("folder/filename.csv")

是否可以为EMPTYDF创建带有头的csv文件?

共有1个答案

陶健
2023-03-14
if(emptyDF.take(1).isEmpty){
  //To create Headers on empty DF
  ss.createDataFrame(List(Row.fromSeq(emptyDF.schema.fieldNames)).asJava, StructType(emptyDF.schema.fieldNames.map{n => StructField(n, StringType)}))
    .write.option("header", false).csv("folder/filename.csv")
} else {
  emptyDF.write.option("header", true).csv("folder/filename.csv")
}
 类似资料:
  • 我试图使用opencsv 3.3与一些用户解析一个简单的csv文件并将其放入bean中,但在运行代码时得到一个类未找到异常。下面是我用于读取对象的Person.class文件。 读取 csv 的代码如下。 当我运行这个时,它表示没有找到报头映射的类。你知道这个人是否有问题吗。类还是使用映射?如果您能提供任何帮助,我们将不胜感激。

  • 问题内容: 我正在努力寻找一种 将数据写入 Node.js中 的CSV 的方法。 有几个CSV插件可用,但是它们只能“写”到stdout。 理想情况下,我想使用循环 逐行 编写。 问题答案: 对于文档()具体状态,它可以用流(见使用,)。因此,使用stdout并不是硬编码。 当您出现其他一些CSV解析器时,您可能也想看看它们。

  • 我对Spark和Scala非常陌生(比如两个小时的新体验),我正在尝试玩CSV数据文件,但我无法做到,因为我不确定如何处理“标题行”,我在互联网上搜索了加载或跳过它的方法,但我真的不知道怎么做。我正在粘贴我正在使用的代码,请帮助我。

  • 当我导入包含一些国家/地区的CSV文件时,我遇到了一些字符的问题。它没有很好的编码然后我得到了?标记,而不是CSV文件中写入的字符。这里有一些国家让我面临这个问题:奥兰群岛、圣巴特勒米、科特迪瓦、库拉索岛。 下面是导入csv文件的代码: 首先我使用了FileReader,所有这些国家都出现了问题,然后我改为InputStreamReader并添加了这个UTF-8字符集,问题几乎解决了。当我使用字符

  • 问题内容: 如果“文件名”不存在,我想使用pd.write_csv写入“文件名”(带有标题),否则,如果存在“文件名”,则附加到文件名中。如果我只使用命令: 写入或追加成功,但似乎每次进行追加时都会写入标头。 如果文件不存在,如何只添加标题,如果文件存在,如何不添加标题而追加标题? 问题答案: 不确定熊猫是否有办法,但是检查文件是否存在将是一种简单的方法:

  • 2)如果数据集不为空,则打印csv文件中的数据的标题 需要第一点的解决方案 第二点是使用此代码