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 相关文章推荐
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
详解python中的装饰器
Jul 10 Python
Django 视图层(view)的使用
Nov 09 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
python中web框架的自定义创建
Sep 08 Python
python 公共方法汇总解析
Sep 16 Python
Python代码中如何读取键盘录入的值
May 27 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
django form和field具体方法和属性说明
Jul 09 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 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&MYSQL服务器配置说明
2006/10/09 PHP
四个PHP非常实用的功能
2015/09/29 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
详解javascript函数的参数
2015/11/10 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python去掉字符串中重复字符的方法
2014/02/27 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python执行时间的计算方法小结
2017/03/17 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
python实现维吉尼亚算法
2019/03/20 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
幼儿园教师工作感言
2014/02/15 职场文书