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中使用Boolean操作符做真值测试实例
Jan 30 Python
深入探究Django中的Session与Cookie
Jul 30 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
python爬虫实现中英翻译词典
Jun 25 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
Django中modelform组件实例用法总结
Feb 10 Python
Python如何生成xml文件
Jun 04 Python
利用PyTorch实现VGG16教程
Jun 24 Python
详解Python如何批量采集京东商品数据流程
Jan 22 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文件的实现方法
2007/03/19 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
php中动态调用函数的方法
2015/03/16 PHP
php处理复杂xml数据示例
2016/07/11 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
js实现3D旋转相册
2020/08/02 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
python安装pil库方法及代码
2019/06/25 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python将时分秒转换成秒的实例
2019/12/07 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
美丽乡村建设实施方案
2014/03/23 职场文书
合作意向书格式及范文
2014/03/31 职场文书
图书馆义工感想
2015/08/07 职场文书
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
Redis实现短信验证码登录的示例代码
2022/06/14 Redis