如何在Databricks中使用PySpark选取Excel指定列生成DataFrame
可行实现方案
- 前置依赖确认:Databricks默认没有集成Excel读取能力,需要先给集群安装对应版本的
com.crealytics:spark-excel包,版本要和集群的Spark、Scala版本匹配。
方案1:读取时直接指定列范围(性能最优)
不需要读取全表35列,直接指定要读取的Excel列范围即可,代码示例:
df = spark.read.format("com.crealytics.spark.excel") \ # 第一行是表头则设为true,无表头设为false .option("header", "true") \ # 指定读取Sales工作表的B到F列 .option("dataAddress", "'Sales'!B:F") \ # 替换为你的Excel文件实际存储路径 .load("dbfs:/FileStore/your_file_path/sales.xlsx")
执行后直接得到仅包含B-F5列的DataFrame。
方案2:全表读取后按列位置筛选
如果你已经完成全表读取得到了全量DataFrame,可以按列索引直接截取需要的列:
# 假设你已经读取全表得到df_full对象 all_columns = df_full.columns # Excel的B列对应PySpark DataFrame的第2列,列索引从0开始计数,因此B-F对应索引1到5 selected_columns = all_columns[1:6] df = df_full.select(*selected_columns)
补充说明:如果你的Excel没有表头,读取后默认列名会是
_c0、_c1...的格式,直接df_full.select("_c1", "_c2", "_c3", "_c4", "_c5")也可以实现相同效果。
内容的提问来源于stack exchange,提问作者Regazzi
相关产品推荐
相关产品推荐

