当前位置: 首页 > news >正文

pyspark==堆叠

安装环境

docker pull jupyter/all-spark-notebook

方式一

from pyspark.sql import SparkSession
from pyspark.sql.functions import expr, col# 创建SparkSession
spark = SparkSession.builder.appName("StudentScores").getOrCreate()# 创建示例数据
data = [("Alice", 18, 85, 90, 78, "Street 1"),("Bob", 19, 88, 92, 82, "Street 2"),("Cathy", 17, 91, 85, 89, "Street 3")
]# 定义列名
columns = ["name", "age", "chinese_score", "math_score", "english_score", "address"]# 创建DataFrame
df = spark.createDataFrame(data, columns)# 展示原始数据
print("原始数据:")
df.show()# 转换为多个class和score列的格式
df_transformed = df.select(col("name"), col("age"), col("address"),expr("stack(3, 'chinese', chinese_score, 'math', math_score, 'english', english_score) as (class, score)")
)# 展示转换后的数据
print("转换后的数据:")
df_transformed.show()# 停止SparkSession
spark.stop()

方式二

from pyspark.sql import SparkSession
from pyspark.sql.functions import lit# 创建SparkSession
spark = SparkSession.builder.appName("StudentScores").getOrCreate()# 创建示例数据
data = [("Alice", 18, 85, 90, 78, "Street 1"),("Bob", 19, 88, 92, 82, "Street 2"),("Cathy", 17, 91, 85, 89, "Street 3")
]# 定义列名
columns = ["name", "age", "chinese_score", "math_score", "english_score", "address"]# 创建DataFrame
df = spark.createDataFrame(data, columns)# 展示原始数据
print("原始数据:")
df.show()# 生成 'chinese' 类别的DataFrame
df_chinese = df.select("name", "age", "address", lit("chinese").alias("class"), col("chinese_score").alias("score"))# 生成 'math' 类别的DataFrame
df_math = df.select("name", "age", "address", lit("math").alias("class"), col("math_score").alias("score"))# 生成 'english' 类别的DataFrame
df_english = df.select("name", "age", "address", lit("english").alias("class"), col("english_score").alias("score"))# 使用union将多个DataFrame合并
df_union = df_chinese.union(df_math).union(df_english)# 展示转换后的数据
print("转换后的数据:")
df_union.show()# 停止SparkSession
spark.stop()

http://www.lryc.cn/news/467924.html

相关文章:

  • Zypher Network Layer3 主网上线,不容错过的“宝藏方舟”活动
  • 【小白学机器学习21】 理解假设检验的关键:反证法
  • 鸿蒙中富文本编辑与展示
  • Python Q-learning 算法详解与应用案例
  • 解决:如何在opencv中得到与matlab立体标定一样的矫正图?(python版opencv)
  • gin入门教程(4):路由与处理器
  • 【python+Redis】hash修改
  • MAVlink协议 部分通用消息集解析
  • c++实现跳表
  • 新探索研究生英语读写教程pdf答案(基础级)
  • 管道与共享内存
  • ES 自定义排序方式
  • 在vue中,编写一个li标签同时使用v-for和v-if,谁的优先级更高
  • Java 后端开发面试题及其答案
  • C++,STL 045(24.10.24)
  • 二叉树习题其五【力扣】【算法学习day.12】
  • 【数据库】Mysql的锁类型
  • 自媒体短视频制作素材下载网站推荐,让创作更简单
  • Altium Designer 入门基础教程(五)
  • Java题集练习3
  • 【部署篇】Haproxy-01安装部署(源码方式安装)
  • 开拓鸿蒙测试新境界,龙测科技引领自动化测试未来
  • Java项目-基于springboot框架的自习室预订系统项目实战(附源码+文档)
  • 调整数组奇偶数顺序
  • Electron调用nodejs的cpp .node扩展【非安全】
  • 一文了解AOSP是什么?
  • ffmpeg视频边缘模糊,打造梦幻般的视觉效果!
  • [Wireshark] 使用Wireshark抓包https数据包并显示为明文、配置SSLKEYLOGFILE变量(附下载链接)
  • 大话红黑树之(1)入门介绍
  • ESC/POS图片打印指令