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

PySpark DataFrame拆分列报错:'Column'对象不可调用如何解决?

解决PySpark中split报错:'Column' object is not callable

问题原因

你写的是Pandas的字符串拆分语法,但df3实际是PySpark DataFrame。PySpark的Column对象没有.str.split()这种调用方式,因此触发TypeError。

解决方案

PySpark中需要使用pyspark.sql.functions提供的split函数来处理字符串拆分,且没有expand=True参数,需通过getItem()提取拆分后的各部分。

步骤1:导入必要函数

from pyspark.sql.functions import split, col, coalesce

步骤2:拆分并提取列

基础写法

先拆分生成临时列,再提取各部分:

# 按非数字字符(\D)拆分USER_FULL_NAME,生成临时列split_name
df_split = df3.withColumn("split_name", split(col("USER_FULL_NAME"), r"\D"))

# 提取拆分后的3个部分,分别命名为Title、FirstName、LastName
df4 = df_split.select(
    "*",
    col("split_name").getItem(0).alias("Title"),
    col("split_name").getItem(1).alias("FirstName"),
    col("split_name").getItem(2).alias("LastName")
).drop("split_name")
简化写法(无需临时列)
df4 = df3.select(
    "*",
    split(col("USER_FULL_NAME"), r"\D").getItem(0).alias("Title"),
    split(col("USER_FULL_NAME"), r"\D").getItem(1).alias("FirstName"),
    split(col("USER_FULL_NAME"), r"\D").getItem(2).alias("LastName")
)

处理拆分后元素不足的情况

如果部分行拆分后不足3个元素,会返回null,可以用coalesce设置默认值(比如空字符串):

df4 = df_split.select(
    "*",
    coalesce(col("split_name").getItem(0), "").alias("Title"),
    coalesce(col("split_name").getItem(1), "").alias("FirstName"),
    coalesce(col("split_name").getItem(2), "").alias("LastName")
).drop("split_name")

额外说明

如果你的df3确实是Pandas DataFrame,检查是否存在以下问题:

  • 列名USER_FULL_NAME是否拼写正确
  • Pandas版本是否过低(确保支持.str.split(expand=True))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:45:31