You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何计算DataFrame各列众数、存入列表并转换为新DataFrame

嘿,搞定这个众数列表转Spark DataFrame其实很简单,给你两种实用的方法,选你顺手的来:

方法1:直接用createDataFrame快速构造

这种方法最直接,我们可以把众数列表和原DataFrame的列名对应起来,生成单行的DataFrame:

# 假设你已经初始化了SparkSession(通常命名为spark)
# 方式一:用字典映射列名和众数,自动匹配列顺序
mode_df = spark.createDataFrame([dict(zip(df_num.columns, mode_val))])

# 方式二:指定原DataFrame的schema,保证数据类型完全一致
# 这种方式更稳妥,尤其当原表有多种数据类型(比如数值、字符串)时
mode_df = spark.createDataFrame([mode_val], schema=df_num.schema)

方法2:用Row对象明确构造行数据

如果你想更清晰地对应列和值,可以用Row对象来构造:

from pyspark.sql import Row

# 创建对应原列名的Row模板
ModeRow = Row(*df_num.columns)
# 把众数列表传入生成行对象
mode_row = ModeRow(*mode_val)
# 转换为DataFrame
mode_df = spark.createDataFrame([mode_row])

验证结果

生成后可以用show()查看最终的DataFrame:

mode_df.show()

这样就能得到一个以原DataFrame列名为表头,各列众数为单行数据的新DataFrame啦,其中None会自动被识别为Spark的null值,完全适配你的需求。

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

火山引擎 最新活动