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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
python在windows命令行下输出彩色文字的方法
Mar 19 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
python实现求特征选择的信息增益
Dec 18 Python
python redis 删除key脚本的实例
Feb 19 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
python+numpy实现的基本矩阵操作示例
Jul 19 Python
python3实现elasticsearch批量更新数据
Dec 03 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
解决python Jupyter不能导入外部包问题
Apr 15 Python
python的dict判断key是否存在的方法
Dec 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输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
初始Nodejs
2014/11/08 NodeJs
使用javascript获取页面名称
2014/12/23 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
初步探究Python程序的执行原理
2015/04/11 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python多线程thread及模块使用实例
2020/04/28 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
行政管理专业求职信
2014/07/06 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书