spark中如何实现行列转换即宽表窄表转换
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,spark中如何实现行列转换即宽表窄表转换,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。不定期上代码干货spark列转行
千家信息网最后更新 2026年11月03日spark中如何实现行列转换即宽表窄表转换
spark中如何实现行列转换即宽表窄表转换,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
不定期上代码干货
spark列转行
from pyspark import SparkContext, SparkConffrom pyspark.sql import SparkSession, SQLContext, Row, functions as Ffrom pyspark.sql.functions import array, col, explode, struct, litconf = SparkConf().setAppName("test").setMaster("local[*]")sc = SparkContext(conf=conf)spark = SQLContext(sc)# df is datasource, by will exclude columndef df_columns_to_line(df, by): # Filter dtypes and split into column names and type description df_a = df.select([col(c).cast("string") for c in df.columns]) cols, dtypes = zip(*((c, t) for (c, t) in df_a.dtypes if c not in by)) # Spark SQL supports only homogeneous columns assert len(set(dtypes)) == 1, "All columns have to be of the same type" # Create and explode an array of (column_name, column_value) structs kvs = explode(array([ struct(lit(c).alias("feature"), col(c).alias("value")) for c in cols ])).alias("kvs") return df_a.select(by + [kvs]).select(by + ["kvs.feature", "kvs.value"])df = sc.parallelize([(1, 0.0, 0.6), (1, 0.6, 0.7)]).toDF(["A", "col_1", "col_2"])df_row_data = df_columns_to_line(df, ["A"])df.show()df_row_data.show()>>> df.show()+---+-----+-----+| A|col_1|col_2|+---+-----+-----+| 1| 0.0| 0.6|| 1| 0.6| 0.7|+---+-----+-----+>>> df_row_data.show()+---+-------+-----+| A|feature|value|+---+-------+-----+| 1| col_1| 0.0|| 1| col_2| 0.6|| 1| col_1| 0.6|| 1| col_2| 0.7|+---+-------+-----+
注意feature和value是原多列名转换为行数据后,重新定义的最终两列名
spark行转列
df_features = df_row_data.select('feature').distinct().collect()features = map(lambda r:r.feature, df_features)df_column_data = df_row_data.groupby("A").pivot('feature', features).agg(F.first('value', ignorenulls=True))df_column_data.show()+---+-----+-----+| A|col_2|col_1|+---+-----+-----+| 1| 0.6| 0.0|+---+-----+-----+
行转列比较简单,在上文结果基础上直接转换,关键是pivot函数的使用
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
帮助
行列
清楚
上代
上文
关键
内容
函数
基础
对此
干货
数据
文章
新手
更多
知识
结果
行业
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
广州淘业互联网络科技
互联网科技工作委员会毛军
科技创新与互联网经济
互联网科技公司税收优惠
奇酷互联网科技公司
居家互联网科技有限公司
美国互联网前沿科技
成都仁贤领冠互联网科技有限公司
互联网大会黑科技排名
贵州叶脉互联网科技有限公司所属行业
彤创互联网科技有限公司
区块链结合互联网科技
合肥互联网科技公司公章图片
工业互联网科技成果转化
九思连强互联网电子科技有限公司
上海乐五互联网科技有限公司
陕西九四连强互联网科技有限公司
知域互联网科技有限公司官网
利用互联网等科技手段
互联网科技园
中关村互联网 科技集团
镁科技互联网资讯平台
科技与互联网的利与弊
阿里巴巴算科技企业还是互联网
高科技互联网发展前景如何
工业互联网山东科技大学
美国互联网科技公司
全球科技与互联网公司市值变化
10位科技互联网大佬