如何在读取spark数据帧时从csv文件中删除列

如何在读取spark数据帧时从csv文件中删除列,csv,pyspark,apache-spark-sql,hdfs,Csv,Pyspark,Apache Spark Sql,Hdfs,我正在尝试从csv文件创建spark数据框,但是我不想在数据框中包含来自原始数据的特定列。在设置模式或读取csv文件时,这可能吗?数据框方法drop返回不带指示列的数据框。数据框方法drop返回不带指示列的数据框。由@Manu Valdés提供的drop答案是最好的方法,这是带有pyspark 假设我们有一个文件.csv,有3列: col1;col2;col3 val1;val2;val3 val4;val5;val6 现在使用sqlContext读取csv文件: df = sqlContex

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

数据框方法
drop
返回不带指示列的数据框。

数据框方法
drop
返回不带指示列的数据框。

由@Manu Valdés提供的
drop
答案是最好的方法,这是带有
pyspark

假设我们有一个
文件.csv
,有3列:

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)

@Manu Valdés给出的
drop
答案是最好的方法,下面是
pyspark的代码

假设我们有一个
文件.csv
,有3列:

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文件的末尾。如果您喜欢RDD,最好的方法是使用
drop('col2')
select('col1',col3')
,然后,您可以在创建数据框之前删除列。是否可以在读取csv时删除列,而不是在创建数据框之后删除列?可以使用数据架构定义,但要删除的列必须位于csv文件的末尾。最好的方法是使用
drop('col2')
select('col1','col3')
如果您喜欢RDD,那么可以在创建数据帧之前删除列