PySpark中Alias用法解析:基于两个代码示例的技术问询
PySpark中
alias()的作用与两个示例解析 刚好我常跟PySpark打交道,给你掰扯清楚alias()到底是干啥的,以及这两个示例里它的核心作用~
简单来说,alias()就是给PySpark里的计算结果列(或者原生列)起一个自定义的新名字,就像给复杂的东西起个外号,方便后续引用,也让输出的结果更清晰可读。
示例1:时间格式转换后的列重命名
看这段代码:
df.select(from_unixtime(unix_timestamp(df.Date_col, 'yyyy-MM-dd HH:mm:ss')).alias('dt_col'))
一步步拆解:
- 首先
unix_timestamp(df.Date_col, 'yyyy-MM-dd HH:mm:ss'):把字符串类型的Date_col列转换成Unix时间戳(一串数字格式的时间) - 接着
from_unixtime(...):把刚才的时间戳再转回人类易读的标准日期字符串格式 - 这一整串计算出来的结果是个“无名列”,如果后续要引用它,总不能每次都写这么长的表达式吧?
.alias('dt_col')就给这个计算结果列起了个简洁的名字dt_col,之后你想筛选、聚合这个列,直接用dt_col就行,省心又清晰。
示例2:统计各列NaN数量并保留原列名
再看这段带列表推导式的代码:
df.select([count(when(isnan(c), c)).alias(c) for c in df.columns]).show()
这里的alias()作用更直观:
- 先看列表推导式里的核心计算:
count(when(isnan(c), c)),这是在统计每一列c中值为NaN的数量(isnan(c)判断单元格是否是NaN,when筛选出这些行后,count统计数量) - 如果不加
.alias(c),每一列的统计结果列名会是count(when(isnan(c), c))这种冗长的表达式,根本分不清对应哪个原列。而.alias(c)直接把统计结果列的名字设置成原列名c,输出的DataFrame里,每一列的名字和原表列名一致,一眼就能看出“这个数是原表age列的NaN数量”,可读性拉满。
内容的提问来源于stack exchange,提问作者corianne1234
相关产品推荐
相关产品推荐

