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

[pyspark] pyspark中如何修改列名字

使用 .withColumnRenamed 来重命名,直接看demo:

from pyspark.sql import SparkSessionspark = SparkSession.builder.appName("example").getOrCreate()data = [("Alice", 1, 200),("Bob", 2, 300),("Charlie", 3, 400),
]columns = ["name", "old_col1", "old_col2"]
df = spark.createDataFrame(data=data, schema=columns)
df.show()
'''
+-------+--------+--------+                                                     
|   name|old_col1|old_col2|
+-------+--------+--------+
|  Alice|       1|     200|
|    Bob|       2|     300|
|Charlie|       3|     400|
+-------+--------+--------+
'''df_rename = df.withColumnRenamed("old_col1", "new_col1").withColumnRenamed("old_col2", "new_col2"
)
df_rename.show()
'''
+-------+--------+--------+
|   name|new_col1|new_col2|
+-------+--------+--------+
|  Alice|       1|     200|
|    Bob|       2|     300|
|Charlie|       3|     400|
+-------+--------+--------+
'''

这个 .withColumnRenamed.withColumn 二者有什么不同呢?

1. df.withColumn

withColumn 方法用于向 DataFrame 中添加一个新列或替换现有列。
这个方法需要两个参数:新列的名称和一个 Column 表达式,该表达式定义了新列的值。如果新列的名称已经存在于 DataFrame 中,那么该列将被替换

from pyspark.sql import SparkSession
from pyspark.sql.functions import litspark = SparkSession.builder.appName("example").getOrCreate()data = [("Alice", 1), ("Bob", 2), ("Charlie", 3)]
columns = ["name", "age"]
df = spark.createDataFrame(data=data, schema=columns)# 使用 withColumn 添加一个新列
df_with_new_column = df.withColumn("new_column", lit("constant_value"))# 使用 withColumn 替换现有列
df_replaced_column = df.withColumn("age", df["age"] * 2)  # 将 age 列的值翻倍df_with_new_column.show()
df_replaced_column.show()

2. df.withColumnRenamed

withColumnRenamed 方法专门用于重命名 DataFrame 中的现有列。它接受两个参数:要重命名的列的当前名称和新名称。

from pyspark.sql import SparkSessionspark = SparkSession.builder.appName("example").getOrCreate()data = [("Alice", 1), ("Bob", 2), ("Charlie", 3)]
columns = ["name", "age"]
df = spark.createDataFrame(data=data, schema=columns)# 使用 withColumnRenamed 重命名列
df_renamed = df.withColumnRenamed("age", "years_old")df_renamed.show()

3. 区别与联系

1. 区别:
  • withColumn 可以添加新列或替换现有列,而 withColumnRenamed 仅用于重命名现有列。
  • withColumn 需要一个 Column 表达式来定义新列的值,而 withColumnRenamed 只需要新列的名称。
2. 联系:
  • 两者都是 DataFrame 的转换操作,返回一个新的 DataFrame,而不修改原始 DataFrame。
  • 两者都可以用于修改 DataFrame 的结构,即列的组成。
  • 在某些情况下,你可以通过组合使用这两个方法来实现更复杂的列操作。例如,你可以先使用 withColumn 添加一个新列,然后使用 withColumnRenamed 来重命名它。
http://www.lryc.cn/news/485589.html

相关文章:

  • 掌握 Spring Boot 的最佳方法 – 学习路线图
  • element-ui】使用el_upload上传文件无法动态修改action
  • 如何查看电脑支持的最大内存
  • 24 年第十届数维杯国际数模竞赛赛题浅析
  • Dubbo 3.x源码(25)—Dubbo服务引用源码(8)notify订阅服务通知更新
  • 排序算法 -计数排序
  • Java学习,基本数据类型
  • 单片机GPIO中断+定时器 软件串口通信
  • elementui el-table中给表头 el-table-column 加一个鼠标移入提示说明
  • NVR小程序接入平台/设备EasyNVR多个NVR同时管理设备接入:海康NVR 3.0提示不在线如何处理?
  • datawhale11月组队学习 模型压缩技术2:PyTorch模型剪枝教程
  • SOL链上Meme生态的崛起与未来#Dapp开发#链游#交易所#公链搭建
  • 部署Apache Doris
  • ElasticSearch-全文检索(一)基本介绍
  • paramiko 库实现的暴力破解 SSH 密码
  • Python 操作 Elasticsearch 全指南:从连接到数据查询与处理
  • Jarvis March算法详解及Python实现(附设计模式案例)
  • AIGC中的文本风格迁移:基于深度学习的实现
  • 丹摩征文活动 |【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解
  • 响应“一机两用”政策 落实政务外网安全
  • 通过JS删除当前域名中的全部COOKIE教程
  • Flutter:Widget生命周期
  • Flutter:Dio下载文件到本地
  • [⑧5G NR]: PBCH payload生成
  • 查看解决端口占用,以及docker解决端口占用的原理
  • 力扣-Hot100-链表其一【算法学习day.34】
  • centos7 升级openssl 与升级openssh 安装卸载 telnet-server
  • C++知识点总结(57):STL综合
  • mac2019环境 Airflow+hive+spark+hadoop本地环境安装
  • 如何使用EasyExcel生成多列表组合填充的复杂Excel示例