pyspark给dataframe增加新的一列的实现示例


Posted in Python onApril 24, 2020

熟悉pandas的pythoner 应该知道给dataframe增加一列很容易,直接以字典形式指定就好了,pyspark中就不同了,摸索了一下,可以使用如下方式增加

from pyspark import SparkContext
from pyspark import SparkConf
from pypsark.sql import SparkSession
from pyspark.sql import functions

spark = SparkSession.builder.config(conf=SparkConf()).getOrCreate()

data =   [['Alice', 19, 'blue', '["Alice", 19, "blue"]'],
  ['Jane', 20, 'green', '["Jane", 20, "green"]'],
   ['Mary', 21, 'blue', '["Mary", 21, "blue"]'], ]
frame = spark.createDataFrame(data, schema=["name", "age", "eye_color", "detail"])

frame.cache()
frame.show()

+-----+---+---------+--------------------+
| name|age|eye_color|              detail|
+-----+---+---------+--------------------+
|Alice| 19|     blue|["Alice", 19, "bl...|
| Jane| 20|    green|["Jane", 20, "gre...|
| Mary| 21|     blue|["Mary", 21, "blue"]|
+-----+---+---------+--------------------+

1、 增加常数项

frame2 = frame.withColumn("contant", functions.lit(10))
frame2.show()

+-----+---+---------+--------------------+-------+
| name|age|eye_color|              detail|contant|
+-----+---+---------+--------------------+-------+
|Alice| 19|     blue|["Alice", 19, "bl...|     10|
| Jane| 20|    green|["Jane", 20, "gre...|     10|
| Mary| 21|     blue|["Mary", 21, "blue"]|     10|
+-----+---+---------+--------------------+-------+

2、简单根据某列进行计算

2.1 使用 withColumn

frame3_1 = frame.withColumn("name_length", functions.length(frame.name))
frame3_1.show()

+-----+---+---------+--------------------+-----------+
| name|age|eye_color|              detail|name_length|
+-----+---+---------+--------------------+-----------+
|Alice| 19|     blue|["Alice", 19, "bl...|          5|
| Jane| 20|    green|["Jane", 20, "gre...|          4|
| Mary| 21|     blue|["Mary", 21, "blue"]|          4|
+-----+---+---------+--------------------+-----------+

2.2 使用 select

frame3_2 = frame.select(["name", functions.length(frame.name).alias("name_length")])
frame3_2.show()

+-----+-----------+
| name|name_length|
+-----+-----------+
|Alice|          5|
| Jane|          4|
| Mary|          4|
+-----+-----------+

2.3 使用 selectExpr

frame3_3 = frame.selectExpr(["name", "length(name) as name_length"])
frame3_3.show()

+-----+-----------+
| name|name_length|
+-----+-----------+
|Alice|          5|
| Jane|          4|
| Mary|          4|
+-----+-----------+

3、定制化根据某列进行计算

比如我想对某列做指定操作,但是对应的函数没得咋办,造,自己造~

frame4 = frame.withColumn("detail_length", functions.UserDefinedFunction(lambda obj: len(json.loads(obj)))(frame.detail))

# or
def length_detail(obj):
 return len(json.loads(obj))
frame4 = frame.withColumn("detail_length", functions.UserDefinedFunction(length_detail)(frame.detail))
frame4.show()

+-----+---+---------+--------------------+-------------+
| name|age|eye_color|              detail|detail_length|
+-----+---+---------+--------------------+-------------+
|Alice| 19|     blue|["Alice", 19, "bl...|            3|
| Jane| 20|    green|["Jane", 20, "gre...|            3|
| Mary| 21|     blue|["Mary", 21, "blue"]|            3|
+-----+---+---------+--------------------+-------------+

到此这篇关于pyspark给dataframe增加新的一列的实现示例的文章就介绍到这了,更多相关pyspark dataframe增加列内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
10个python爬虫入门实例(小结)
Nov 01 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
python3中确保枚举值代码分析
Dec 02 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 #Python
python实现飞船大战
Apr 24 #Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 #Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 #Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 #Python
Python读入mnist二进制图像文件并显示实例
Apr 24 #Python
python实现坦克大战
Apr 24 #Python
You might like
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
深入了解Python数据类型之列表
2016/06/24 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
详解Python学习之安装pandas
2019/04/16 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
解决python运行启动报错问题
2020/06/01 Python
python exit出错原因整理
2020/08/31 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
2019年c语言经典面试题目
2016/08/17 面试题
酒店管理专业学生求职信
2013/09/27 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
中等生评语大全
2014/05/04 职场文书
小英雄雨来观后感
2015/06/09 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
Python基础知识之变量的详解
2021/04/14 Python
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android