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中内建函数的简单用法说明
May 05 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python实现自动发送邮件功能
Mar 02 Python
python去除扩展名的实例讲解
Apr 23 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
python将字符串转变成dict格式的实现
Nov 18 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
Python读取JSON数据操作实例解析
May 18 Python
Python 连接 MySQL 的几种方法
Sep 09 Python
如何使用python写截屏小工具
Sep 29 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类
2006/07/15 PHP
将数组写入txt文件 var_export
2009/04/21 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
python获取本机mac地址和ip地址的方法
2015/04/29 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
python实现代码统计器
2019/09/19 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
介绍下static、final、abstract区别
2015/01/30 面试题
大学英语专业求职信
2014/06/21 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
考试没考好检讨书
2015/05/06 职场文书
2015年科协工作总结
2015/05/19 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
中学教师读书笔记
2015/07/01 职场文书
门面租赁合同范文
2019/08/06 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技