spark Scala中dataframe的常用关键字:withColumn

2023-11-15

        withColumn关键字:

        用于操作dataframe原表某一列的数据,将操作完的每一行数据形成一列,用来替换一个表原有的列或者在原表后面追加新的列!

 语法如下:

def withColumn(colName: String, col: Column): DataFrame

withColumn传入两个参数:

先说第二个参数:

该参数传入的是操作dataframe表中指定”列”的数据。他会对dataframe表中的每一行数据进行操作,最后返回一个新的列。如果第一个参数传入的列名和第二个参数传入的列名参数相同的话,就会替换原来的列。如果第一个参数和原列名参数不同,则会追加新增加一列数据在表后面。具体例子如下:

 现用withColumn关键字将city字段类似于“成都·双流区” 操作转换成  “成都” ,思路是将city字段数据“·”后面的数据去除,然后替换掉原来列或者新增一列两种情况:

原数据:

情况一(替换原列):传入的第一个参数和原列名相同:

在withColumn的第二个参数传入正则匹配将“·”后面的数据替换成空。但是第一个参数city和原列名city相同,则替换原列的数据:

df.withColumn("city", regexp_replace(col("city"), "·.*", "")).show

 替换dataframe表原列city的数据:

情况二(追加新列):传入的第一个参数和原列名不同

在withColumn的第二个参数传入正则匹配将“·”后面的数据替换成空。但是第一个参数newCity和原列名city不相同,则在dataframe表后面追加新列newCity:

df.withColumn("newCity", regexp_replace(col("city"), "·.*", "")).show

dataframe表末尾追加新列newCity: 

总结:

        该关键字第二个参数可以对表中的指定的字段进行操作,操作完之后会返回一列数据,这列数据是以替换的形式还是以追加的形式存在,要看第一 个参数列名是否与第二个参数列名是否相同,相同则是替换原表的列数据,不相同则在原表中追加新增列。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spark Scala中dataframe的常用关键字:withColumn 的相关文章

随机推荐

  • ipv6 inet_pton功能说明

    基于VS2017 include
  • SpringBoot中事务配置

    做个学习笔记 SpringBoot创建的项目由于不存在xml配置文件了 对于用惯Spring的xml配置事务犯了难 百度了下 大多文章都是用 Transactional对每一个方法或类手动添加任务 这样很麻烦 就自己摸索了下 实现了对指定切
  • 2022年美赛C题翻译+思路分享

    MCM C 交易策略 思路在后面 背景 市场交易者频繁买卖波动性资产 目标是最大化其总回报 每次买卖通常都会有佣金 两种这样的资产是黄金和比特币 图 1 黄金每日价格 每金衡盎司美元 资料来源 伦敦金银市场协会 2021 年 9 月 11
  • 灰狼优化算法(GWO)(解决TSP问题,代码完整免费)

    算法背景 灰狼优化算法 GWO 由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法 灵感来自于灰狼群体捕食行为 优点 较强的收敛性能 结构简单 需要调节的参数少 容易实现 存在能够自适应调整的收敛因子
  • MYSQL的四种连接查询学习笔记

    内连接 inner join 或者 join 外连接 1 左连接 left join 或者 left outer join 2 右连接 right join 或者 right outer join 3 完成外连接 full join 或者
  • QT TCP简单的通信示例

    TCP服务端 第一步 创建监听套接字的QTcpSever QTcpServer m tsTcpServer 第二部步 listen 监听是否有新的连接进来 int iMyport 如果有新的客户端连接的话 会触发信号newConnectio
  • Appium 环境搭建安装 java sdk 和 Android SDK

    java sdk 下载 java sdk 在官网上下载https www oracle com java technologies downloads java8 windows 无脑下一步安装 但要看清楚安装目录 配置全局变量要用 我的是
  • 关于队列的几个小算法

    1 用静态数组实现队列的基本操作 思路 创建3个变量 start end size size用来查看数组中数据的数量 从而实现添加和删除的长度控制 当添加数据时 如果end size 1 说明end已经指向最后一位 所以 end end s
  • css基础--位移和定位2(鼠标位置,滚动条位置)

    获取鼠标指针的页面位置 e pageX e clientX 获取鼠标指针在元素内的位置 e offsetX e layerX 获取滚动条的位置 self pageXOffset document documentElement docume
  • GCC编译器(2)

    接GCC编译器 1 4 警告选项 在编译过程中 编译器的报错和警告信息对于程序员来说是非常重要的信息 GCC包含完整的出错检查和警告提示功能 它可以帮助Linux程序员尽快找出错误的或潜在的错误代码 从而写过更优美的代码 GCC的编译器警告
  • 纯干货!!!Python开发必备!!!70+本图书合集(PDF+源码)

    纯干货 Python开发必备 70 本图书合集 PDF 源码 合集包含了从入门到精通 Web 安全 算法 人工智能 游戏 爬虫等一系列技术的专业书籍 其中有多本图书被程序员奉为圭臬 例如 Python编程从入门到实践 笨办法学Python
  • 9、区块链简介

    区块链 Blockchain 在2008年由署名为中本聪的作者在 比特币 一种点对点的电子现金系统 一文提出 指的是一种在对等网络环境下 通过透明和可信规则 构建防伪造 防篡改和可追溯的块链式数据结构 实现和管理事务处理的模式 区块链本质上
  • 【译】IPSEC.CONF(5) - IPsec配置

    NAME ipsec conf IPsec配置 DESCRIPTION ipsec conf指定了Openswan IPsec子系统的大多数配置和控制信息 include ipsec conf 包含指定的配置文件 CONN SECTIONS
  • 【使用 flink-cdc 将数据从 mysql 同时同步到 redis, elastisearch, clickhouse】

    要从 MySQL 同时同步到 Redis Elasticsearch 和 Clickhouse 可以使用 Flink CDC 和 Flink Table API 来实现 首先 需要在 Flink 中配置 CDC 数据源 使其能够连接到 My
  • WIndows10系统 安装Anaconda、Pycharm以及在其中导入Pytorch环境(NVIDIA GPU版本)

    WIndows10系统 安装Anaconda Pycharm以及在其中导入Pytorch环境 NVIDIA GPU版本 1 判断电脑是否具有GPU 2 安装Anaconda 3 创建虚拟环境 3 1 利用conda命令创建虚拟环境 4 GP
  • MySQL——卸载重装MySQL失败?

    该问题通常是因为MySQL卸载时 没有完全清除相关信息导致的 解决办法是 把以前的安装目录删除 如果之前安装并未单独指定过服务安装目录 则默认安装目录是 C Program Files MySQL 彻底删除该目录 同时删除MySQL的Dat
  • [QT_024]Qt学习之QByteArray详解

    本文转自 Qt编程指南 作者 奇先生 Qt编程指南 Qt新手教程 Qt Programming Guide 本节学习 QByteArray 的两种用法 第一种作为字符串处理类 类似 QString 但 QByteArray 内部字符编码不确
  • 时间序列预测方法最全总结!

    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息 包括连续型预测 数值预测 范围估计 与离散型预测 事件预测 等 具有非常高的商业价值 需要明确一点的是 与回归分析预测模型不同 时间序列模型依赖于数值在时间上的先后顺序 同样
  • 一文讲透CRC校验码-附赠C语言实例

    一口君最近工作用到CRC校验 顺便整理本篇文章和大家一起研究 一 CRC概念 1 什么是CRC CRC Cyclic Redundancy Checksum 是一种纠错技术 代表循环冗余校验和 数据通信领域中最常用的一种差错校验码 其信息字
  • spark Scala中dataframe的常用关键字:withColumn

    withColumn关键字 用于操作dataframe原表某一列的数据 将操作完的每一行数据形成一列 用来替换一个表原有的列或者在原表后面追加新的列 语法如下 def withColumn colName String col Column