如何拆分DataFrame列值并提取前两个字符串至新列?
提取DataFrame列前两个字符串生成新列(处理Null值)
PySpark 实现
结合split、slice和concat_ws函数,配合when逻辑处理Null值:
from pyspark.sql import functions as F # 假设原DataFrame为df,目标列名为"column" df = df.withColumn( "New column", F.when( F.col("column").isNotNull(), F.concat_ws(" ", F.slice(F.split(F.col("column"), " "), 1, 2)) ).otherwise(F.lit(None)) )
split(F.col("column"), " "):按空格将字符串拆分为数组slice(..., 1, 2):从数组中提取前2个元素(PySpark数组索引从1开始)concat_ws(" ", ...):用空格拼接提取出的两个元素when...otherwise:保证原列为Null时,新列同步为Null
Pandas 实现
通过字符串方法链即可简洁处理,原列的Null值会自动保留到新列:
import pandas as pd # 假设原DataFrame为df,目标列名为"column" df["New column"] = df["column"].str.split(n=2).str[:2].str.join(" ")
str.split(n=2):按空格拆分字符串,最多拆分2次,得到包含前两个词和剩余内容的列表str[:2]:截取列表的前两个元素str.join(" "):将两个元素用空格拼接成完整字符串
内容的提问来源于stack exchange,提问作者Harshith K R
相关产品推荐
相关产品推荐

