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

PySpark计算row_number报错:AttributeError: 'module'无rowNumber属性

问题原因及解决方案

你碰到的AttributeError: 'module' object has no attribute 'rowNumber'错误,核心原因很简单——PySpark里压根没有rowNumber()这个函数,正确的窗口函数名是row_number()(注意是蛇形命名,下划线加小写组合)。

PySpark的内置函数普遍遵循蛇形命名法(snake_case),而不是你写的驼峰命名法(camelCase),这就是报错的直接诱因。

修改后的可运行代码

只需要把F.rowNumber()替换成F.row_number()就能解决问题,完整代码如下:

from pyspark.sql.functions import first
from pyspark.sql.types import *
from pyspark.sql import *
from pyspark.sql import Row, functions as F
from pyspark.sql.window import Window
import pyspark.sql.functions as func

def Codes(pharmacyCodes):
    df_data = pharmacyCodes
    (df_data
     .select("MID", "claimid", 
             F.row_number()  # 这里修正为正确的函数名
             .over(Window
                   .partitionBy("MID")
                   .orderBy("MID")
                  )
             .alias("rowNum")
            )
     .show()
    )

额外优化建议

顺便提一句,你当前用orderBy("MID")其实没有实际意义——因为已经按MID分区了,同一分区内的MID值完全相同,排序不会改变行的顺序。如果需要生成有业务逻辑的行号,建议改成按claimid排序,比如orderBy("claimid"),这样行号会按理赔ID的顺序生成,更符合常见的业务场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:55