pyspark dataframe常用操作总结

1.dataframe列数据类型校验

isinstance(df.schema["col_name"].dataType, ArrayType)

2.将dataframe列中的list数据转化为多行
例如:[‘qq’, ‘ww’, ‘ee’]——>qq
ww
ee

import pyspark.sql.functions as F
exploded_df = df.select("exploded_data", F.explode("orig_col").alias("exploded_data"))

详见:https://stackoverflow.com/questions/48822381/pyspark-convert-column-of-lists-to-rows
3.dataframe去重操作

df.dropDuplicates((subset=['col1''col2'])

4.dataframe字符串拆分成多列
例如:原始数据为‘aa_bb’——>‘aa’, 'bb’两列

split[添加链接描述](https://sparkbyexamples.com/pyspark/pyspark-withcolumn/)_col = split(exploded_df["exploded_data"], '_').alias("new_col")
exploded_df = exploded_df.select("exploded_data", split_col.getItem(0).alias('col1_name'),
                                     split_col.getItem(1).alias('col2_name'))

详见:https://stackoverflow.com/questions/45789489/how-to-split-a-list-to-multiple-columns-in-pyspark
5.dataframe列名重命名

df = df.withColumnRenamed("orig_name", "new_name")

更多关于withColumn方法的使用详见:
https://sparkbyexamples.com/pyspark/pyspark-withcolumn/
6.dataframe的list数据to多列

from pyspark.sql.types import *          
    from pyspark.sql.functions import * 
    from pyspark import Row

    df = spark.createDataFrame([Row(index=1, finalArray = [1.1,2.3,7.5], c =4),Row(index=2, finalArray = [9.6,4.1,5.4], c= 4)])
    #collecting all the column names as list
    dlist = df.columns
    #Appending new columns to the dataframe
    df.select(dlist+[(col("finalArray")[x]).alias("Value"+str(x+1)) for x in range(0, 3)]).show()

详见:https://stackoverflow.com/questions/45789489/how-to-split-a-list-to-multiple-columns-in-pyspark

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河念远之追寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值