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

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

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

from pyspark.sql import SparkSession

spark = 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 lit

spark = 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 SparkSession

spark = 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.kler.cn/a/394167.html

相关文章:

  • Excel筛选的操作教程
  • Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件
  • 华为大变革?仓颉编程语言会代替ArkTS吗?
  • 基于标签相关性的多标签学习
  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • MySQL技巧之跨服务器数据查询:进阶篇-从A数据库复制到B数据库的表中
  • 【机器学习】如何配置anaconda环境(无脑版)
  • 前端(2)——快速入门CSS
  • 证明在无三角形且最大度数为d的图中,随机染色下每个顶点的平均可用颜色数至少为d/3
  • 认证鉴权框架SpringSecurity-2--重点组件和过滤器链篇
  • 华为云分布式缓存服务(DCS)专家深度解析Valkey,助力openEuler峰会
  • zabbix搭建钉钉告警流程
  • 第21课-C++[set和map学习和使用]
  • 【matlab】数据类型01-数值型变量(整数、浮点数、复数、二进制和十六进制)
  • PostgreSQL 逻辑复制
  • 前端三大组件之CSS,三大选择器,游戏网页仿写
  • 编程之路,从0开始:知识补充篇
  • Rocky、Almalinux、CentOS、Ubuntu和Debian系统初始化脚本v9版
  • 【再谈设计模式】建造者模式~对象构建的指挥家
  • 【gitlab-ce】各组件介绍
  • react-markdown内容宽度溢出和换行不生效问题
  • 如何保护 Microsoft 网络免受中间人攻击
  • CAN通讯演示(U90-M24DR)
  • 关于番外篇-CSS3新增特性
  • Docker与Podman全面比较
  • 企业一站式管理系统odoo的研究——PLM插件的搭建