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 del()函数用法
Mar 24 Python
Python语言描述连续子数组的最大和
Jan 04 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
python实现统计代码行数的小工具
Sep 19 Python
解决pycharm下pyuic工具使用的问题
Apr 08 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
Python机器学习之KNN近邻算法
May 14 Python
Elasticsearch 基本查询和组合查询
Apr 19 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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
python万年历实现代码 含运行结果
2017/05/20 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Pytorch之parameters的使用
2019/12/31 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
新年寄语大全
2014/04/12 职场文书
全陪导游词
2015/02/04 职场文书
市场部岗位职责范本
2015/04/15 职场文书
毕业赠语大全
2015/06/23 职场文书
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android