读入火花数据框时如何从csv文件中删除列

Posted

技术标签:

【中文标题】读入火花数据框时如何从csv文件中删除列【英文标题】:How to drop a column from a csv file when reading into a spark dataframe 【发布时间】:2018-08-01 07:24:32 【问题描述】:

我正在尝试从 csv 文件创建 spark 数据框,但是我不想在数据框中包含来自原始数据的特定列。这在设置架构或读取 csv 文件时是否可行?

【问题讨论】:

【参考方案1】:

@Manu Valdés 的drop 答案是最好的方法,这里是pyspark 的代码

假设我们有一个包含 3 列的 file.csv

col1;col2;col3
val1;val2;val3
val4;val5;val6

现在使用 sqlContext 读取 csv 文件:

df = sqlContext.read.format('csv').options(header='true', delimiter=';').load('/FileStore/file.csv')

df.printSchema()

root 
 |-- col1: string (nullable = true)
 |-- col2: string (nullable = true)
 |-- col3: string (nullable = true)

删除col2

df2 = df.drop('col2')
df2.printSchema()

root 
 |-- col1: string (nullable = true)
 |-- col3: string (nullable = true)

【讨论】:

是否可以在读取 csv 时删除该列,而不是在创建数据框后删除该列? 数据架构定义可以,但要删除的列必须在csv文件的末尾 最好的方法是使用drop('col2')select('col1', 'col3') 如果您更喜欢 RDD,那么您可以在创建数据框之前删除列【参考方案2】:

DataFrame 方法drop 返回一个没有指定列的DataFrame。

【讨论】:

以上是关于读入火花数据框时如何从csv文件中删除列的主要内容,如果未能解决你的问题,请参考以下文章

为啥在附加熊猫数据框时列顺序会发生变化?

Python将整数从csv文件读入列表

将火花数据帧写入固定宽度文件java spark

将大型 csv 文件从 S3 读入 R

如何从 Perl 快速访问许多大型 CSV 文件中的数据?

将 CSV 读入 Spring Boot 应用程序时,如何将数据表列从累积转换为差异?