如何使用Python从Azure文件共享获取数据并导入Pandas DataFrame
从Azure文件共享导入CSV至Pandas DataFrame(Databricks环境)
你之前的代码是针对Azure Data Lake Storage Gen2容器的,要访问Azure文件共享,需要调整挂载的源格式和配置参数,以下是具体实现步骤:
1. 挂载Azure文件共享到Databricks文件系统
Azure文件共享的挂载源地址格式与ADLS Gen2不同,需指向file.core.windows.net域名,配置参数也需对应调整:
# 替换为你的存储账户信息 storageAccountName = "你的存储账户名称" fileShareName = "你的文件共享名称" storageAccountAccessKey = "你的存储账户访问密钥" # 执行挂载操作 dbutils.fs.mount( source = f"abfss://{fileShareName}@{storageAccountName}.file.core.windows.net", mount_point = f"/mnt/{fileShareName}", extra_configs = { f"fs.azure.account.auth.type.{storageAccountName}.file.core.windows.net": "SharedKey", f"fs.azure.account.key.{storageAccountName}.file.core.windows.net": storageAccountAccessKey } )
若提示挂载点已存在,可添加
overwrite=True参数覆盖现有挂载。
2. 验证挂载并查看CSV文件
挂载成功后,可通过以下命令查看共享内的CSV文件:
# 列出挂载点下的所有文件 file_list = dbutils.fs.ls(f"/mnt/{fileShareName}") # 筛选并打印CSV文件路径 for file in file_list: if file.name.endswith(".csv"): print(f"找到CSV文件:{file.path}")
3. 将CSV导入Pandas DataFrame
由于Pandas无法直接读取Databricks文件系统(DBFS)路径,需将路径转换为本地路径前缀/dbfs/,再进行读取:
单个CSV文件导入
import pandas as pd # 替换为目标CSV文件的挂载路径 csv_local_path = f"/dbfs/mnt/{fileShareName}/你的文件名.csv" df = pd.read_csv(csv_local_path) # 查看数据前几行 print(df.head())
批量导入并合并多个CSV文件
import pandas as pd dfs = [] for file in file_list: if file.name.endswith(".csv"): # 转换为本地可访问路径 local_path = f"/dbfs{file.path}" # 读取单个CSV文件 temp_df = pd.read_csv(local_path) dfs.append(temp_df) # 合并所有DataFrame combined_df = pd.concat(dfs, ignore_index=True) print(f"合并后数据总行数:{len(combined_df)}")
4. 可选:不挂载直接访问文件
若无需持久化挂载,可通过配置Spark参数直接读取文件,再转换为Pandas DataFrame:
# 配置存储账户密钥 spark.conf.set(f"fs.azure.account.key.{storageAccountName}.file.core.windows.net", storageAccountAccessKey) # 使用Spark读取所有CSV文件,再转换为Pandas DataFrame spark_df = spark.read.csv( f"abfss://{fileShareName}@{storageAccountName}.file.core.windows.net/*.csv", header=True, # 若CSV包含表头需设置为True inferSchema=True # 自动推断列类型 ) pandas_df = spark_df.toPandas()
内容的提问来源于stack exchange,提问作者Akansha
相关产品推荐
相关产品推荐

