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 SqlAlchemy
Feb 12 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
Python构建网页爬虫原理分析
Dec 19 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
python学生管理系统学习笔记
Mar 19 Python
python实现扫描ip地址的小程序
Apr 16 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
用python打印菱形的实操方法和代码
Jun 25 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 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实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
jquery.ui.draggable中文文档
2009/11/24 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
React Router基础使用
2017/01/17 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Python continue语句实例用法
2020/02/06 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
巴西网上药房:onofre
2016/11/21 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
学校对教师的评语
2014/04/28 职场文书
化学教育专业求职信
2014/07/08 职场文书
七一建党日演讲稿
2014/09/05 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
MySQL导致索引失效的几种情况
2022/06/25 MySQL
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技