我有麻烦重命名基于csv的数据帧的标头。
我得到了以下数据帧:df1:
Att1 Att2 Att3
23 m 0
22 m 1
42 f 0
32 f 0
45 m 1
现在我想根据csv文件更改列名(第一行),如下所示:
Att1,age
Att2,gender
Att3,employed
...,...
Att99,colnameY
Att100,colnameZ
因此,我期望数据帧如下所示:
age gender employed
23 m 0
22 m 1
42 f 0
32 f 0
45 m 1
有什么想法吗?感谢您的帮助:)
import scala.io.Source.fromFile
// read in the names map from old names to new names
val map = fromFile("names.csv").getLines.map(line => {
val fields = line.split(",")
(fields(0), fields(1))
}).toMap
// map: scala.collection.immutable.Map[String,String] = Map(Att1 -> age, Att2 -> gender, Att3 -> employed)
// rename columns using withColumnRenamed
df1.columns.foldLeft(df1){
case (df, col) => df.withColumnRenamed(col, map.getOrElse(col, col))
}.show
+---+------+--------+
|age|gender|employed|
+---+------+--------+
| 23| m| 0|
| 22| m| 1|
| 42| f| 0|
| 32| f| 0|
| 45| m| 1|
+---+------+--------+
并将其应用于数据表的一列--这是我希望这样做的: 我还没有找到任何简单的方法,正在努力找出如何做到这一点。一定有一个更简单的方法,比将数据rame转换为和RDD,然后从RDD中选择行来获得正确的字段,并将函数映射到所有的值,是吗?创建一个SQL表,然后用一个sparkSQL UDF来完成这个任务,这更简洁吗?
以下脚本: Floor1正在正确执行,Floor2使用相同的df执行,但使用重命名的列则不正确。我得到一个关键错误: 我知道,有一个类似的问题:重命名列后get keyerror 但我并没有真正得到答案,更重要的是,我没有找到解决办法。
我想将以下数据框的第1列重命名为“Ref”。我有很多列,因此无法重命名每个列或为每个列设置名称。 这是数据帧 现在我想将第一列重命名为'Ref'。我试过这个 它重命名所有标题与列[1]相似的列。
我想在spark中读取一个CSV,将其转换为DataFrame,并使用将其存储在HDFS中 在Apache Spark中将CSV文件加载为DataFrame的正确命令是什么?
我正在尝试使用Databricks的spark-csv2.10依赖关系将一个数据帧写入到HDFS的*.csv文件。依赖关系似乎可以正常工作,因为我可以将.csv文件读入数据帧。但是当我执行写操作时,我会得到以下错误。将头写入文件后会出现异常。 当我将查询更改为时,write工作很好。 有谁能帮我一下吗? 编辑:根据Chandan的请求,这里是的结果
我正在用PySpark DataFrames分析一些数据。假设我有一个正在聚合的数据帧< code>df: 这将给我: 聚合工作得很好,但我不喜欢新的列名。有没有办法将此列重命名为人类可以从方法中读取的内容?也许更类似于中的操作: