首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spark和scala中,如何将数据帧转换或映射到特定的列信息?

问在spark和scala中,如何将数据帧转换或映射到特定的列信息?
EN

Stack Overflow用户
提问于 2016-07-15 18:34:38
回答 2查看 1.2K关注 0票数 0

Scala。

火花。

intellij的想法。

我有一个来自CSV文件的数据帧(多行,多列)。

我想要它映射到另一个特定的列信息。

我认为scala类(不是case类,因为列数大于22)或map().....

但我不知道如何转换它们。

示例

来自CSV文件的数据帧。

代码语言:javascript
复制
----------------------
| No  |  price| name |
----------------------
|  1  |  100  |  "A" |
----------------------
|  2  |  200  |  "B" |
----------------------

另一个特定的栏目信息。

代码语言:javascript
复制
 => {product_id, product_name, seller}

首先,product_id映射到“No”。其次,product_name映射到'name‘。第三,seller为null或“”(空字符串)。

所以,最后,我需要一个数据帧,它有另一个列info。

代码语言:javascript
复制
-----------------------------------------
| product_id  |  product_name  | seller |
-----------------------------------------
|      1      |       "A"      |        |
-----------------------------------------
|      2      |       "B"      |        |
-----------------------------------------
EN

回答 2

Stack Overflow用户

发布于 2016-07-15 18:42:30

如果您已经有一个数据帧(例如,old_df):

代码语言:javascript
复制
val new_df=old_df.withColumnRenamed("No","product_id").
                  withColumnRenamed("name","product_name").
                  drop("price").
                  withColumn("seller", ... )
票数 0
EN

Stack Overflow用户

发布于 2016-07-15 18:48:23

假设您的CSV文件是"products.csv",

首先,你必须将它加载到spark中,你可以使用

代码语言:javascript
复制
import org.apache.spark.sql.SQLContext

val sqlContext = new SQLContext(sc)
val df = sqlContext.read
     .format("com.databricks.spark.csv")
     .option("header", "true") // Use first line of all files as header
     .option("inferSchema", "true") // Automatically infer data types
     .load("cars.csv")

加载数据后,您将拥有dataframe df中的所有列名。正如您所提到的,您的列名将是"No“、"Price”、" name“。

要更改列的名称,只需使用dataframe的withColumnRenamed接口。

代码语言:javascript
复制
val renamedDf = df.withColumnRenamed("No","product_id").
   withColumnRenames("name","product_name")

您的renamedDf将具有您所分配的列的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38393942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档