You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark中如何移除CSV表头的双引号与分号?

解决PySpark移除CSV表头和数据中的双引号、分号问题

方法一:读取CSV时直接处理(推荐)

在读取阶段配置quote参数,让Spark自动识别并剥离字段前后的双引号,同时正确解析分号分隔符,避免后续额外处理:

import pyspark.sql.functions as F

# 读取CSV时指定分隔符、引号规则,自动处理表头和数据中的引号
df = spark.read.options(
    delimiter=';',
    quote='"',  # 指定字段包裹的引号字符,Spark会自动去除
    header=True
).csv("C:/Project_bankdata.csv")

# 若需移除数据中的分号(如字段值内的分号),执行替换
df_cleaned = df.select([F.regexp_replace(c, ';', '').alias(c) for c in df.columns])

df_cleaned.show(10, truncate=0)

读取后表头会自动变为age、job、marital等无引号的名称,数据中的引号也会被自动清理,最后一步的regexp_replace用于移除数据里可能存在的分号。

方法二:读取后修改表头并清理数据

如果已按原方式读取数据,可通过修改列名移除表头引号,再清理数据中的目标字符:

import pyspark.sql.functions as F

# 原读取代码
df = spark.read.options(delimiter=';').csv("C:/Project_bankdata.csv", header=True)

# 移除表头中的双引号
df = df.toDF(*[col_name.replace('"', '') for col_name in df.columns])

# 移除数据中的双引号和分号
df_cleaned = df.select([F.regexp_replace(c, '[";]', '').alias(c) for c in df.columns])

df_cleaned.show(10, truncate=0)
  • df.toDF(*[col_name.replace('"', '') for col_name in df.columns]):遍历所有列名,去掉其中的双引号,重新命名表头。
  • regexp_replace(c, '[";]', ''):用正则匹配双引号或分号,替换为空字符串,一次性清理数据中的目标字符。

内容的提问来源于stack exchange,提问作者user20194137

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:30:47