pyspark给dataframe增加新的一列的实现示例

 更新时间:2020年04月24日 14:28:27   作者:晓东邪  
这篇文章主要介绍了pyspark给dataframe增加新的一列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

熟悉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 字典生成树状图的实例

    这篇文章主要介绍了python 字典生成树状图的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 使用Python进行数独求解详解(一)

    使用Python进行数独求解详解(一)

    本文主要介绍了如何构建一个Python脚本来解决数独难题,本文的重点在于介绍用于构建数独求解器的回溯算法。感兴趣的小伙伴可以学习一下
    2022-02-02
  • python字符串中的单双引

    python字符串中的单双引

    下面小编就为大家带来一篇python字符串中的单双引。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 利用Python将图片批量转化成素描图的过程记录

    利用Python将图片批量转化成素描图的过程记录

    万能的Python真的是除了不会生孩子,其他的还真不在话下,下面这篇文章主要给大家介绍了关于如何利用Python将图片批量转化成素描图的相关资料,需要的朋友可以参考下
    2021-08-08
  • Django提示mysql版本过低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).的解决方法

    Django提示mysql版本过低:django.db.utils.NotSupportedError: My

    这篇文章主要介绍了Django提示mysql版本过低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).的解决方法,文中有详细的解决方案,具有一定的参考价值,需要的朋友可以参考下
    2024-03-03
  • Python 变量教程字节对象与字符串

    Python 变量教程字节对象与字符串

    这篇文章主要介绍了Python变量教程字节对象与字符串,字节对象是字节序列,而字符串是字符序列,字节对象在内部是机器可读的形式,字符串只是人类可读的形式
    2022-08-08
  • opencv+python识别七段数码显示器的数字(数字识别)

    opencv+python识别七段数码显示器的数字(数字识别)

    本文主要介绍了opencv+python识别七段数码显示器的数字(数字识别),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Python移动测试开发subprocess模块项目实战

    Python移动测试开发subprocess模块项目实战

    这篇文章主要为大家介绍了Python移动测试开发subprocess模块项目实战示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  •  python 中的条件判断语句的使用介绍

     python 中的条件判断语句的使用介绍

    这篇文章主要介绍了 python 中的条件判断语句的使用,主要学习内容有封装过于复杂的逻辑判断,不同分支下的重复代码等,更多相关内容,需要的小伙伴可以参考下面文章详细介绍内容
    2022-03-03
  • Python学习之函数 def

    Python学习之函数 def

    这篇文章主要介绍了Python的函数 def,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10

最新评论