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

PySpark中如何将DataFrame转换为字符串用于正则表达式处理

Pandas DataFrame转字符串做正则处理实现方案

需求说明

将Spark读取的文本文件转换为Pandas DataFrame后,把文本内容转为可做正则处理的字符串格式,实现相邻行两两拼接、删除行内换行,最终输出指定格式的结果。

输入数据

SRAVAN
KUMAR
RAKESH
SOHAN

原有代码问题

  • 直接将Pandas DataFrame对象传入re.sub()方法:re.sub仅支持字符串类型入参,无法直接处理DataFrame结构
  • 正则替换逻辑不符合预期:原逻辑会删除所有换行符,最终得到一整行连续字符串,无法实现两两分行拼接的效果
  • 存在无效错误代码行:schema: pysark.sql.dataframe.DataFrame 为无效语句,且pysark存在拼写错误

可运行修正代码

列表拼接实现(无需正则,性能更优)

import pandas as pd

# 读取HDFS文本文件
file = spark.read.text("hdfs://test.txt")
pands_df = file.toPandas()

# 提取默认存文本的value列,过滤空值后转为列表
content_list = pands_df['value'].dropna().tolist()
# 按每2个元素为一组做无间隔拼接
merge_result = [''.join(content_list[i:i+2]) for i in range(0, len(content_list), 2)]
# 拼接为最终输出的字符串格式
result = '\n'.join(merge_result)

print(result)

正则实现版本

如果需要通过正则完成处理,先将DataFrame中的文本内容拼接为完整字符串,再通过正则替换相邻行之间的换行符:

import re
import pandas as pd

file = spark.read.text("hdfs://test.txt")
pands_df = file.toPandas()

# 先将所有文本行拼接为带换行的完整字符串
full_content = '\n'.join(pands_df['value'].dropna().tolist())
# 正则匹配相邻两行,删除两行中间的换行符
result = re.sub(r'(.+)\n(.+)', r'\1\2', full_content)

print(result)

期望输出结果

SRAVANKUMAR
RAKESHSOHAN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:33:12