pyspark DataFrame 基本增删改查重命名等基本操作

连接spark

from pyspark.sql import SQLContext, SparkSession
url='local'spark = SparkSession.builder \
    .master(urll) \
    .appName("testdemo") \
    .getOrCreate()
ctx = SQLContext(spark)

从csv文件读取数据转换成DataFrame数据类型

#pyspark从csv文件读取到d f
dfcsv= spark.read.format('csv').option('header','true').load('中学课程.csv')
dfcsv.show()
+---+-----------+------------------+--------+----------------+--------------------------+----+--------+-------------------------------------+
|_c0|question_id|              科目|    专项|        一级考点|                  二级考点|学段|二级学段|                                 stem|
+---+-----------+------------------+--------+----------------+--------------------------+----+--------+-------------------------------------+
|  0|      69963|教资教育知识与能力|中学课程|        课程组织|                  课程内容|中学|        |在教材编写过程中课程内容前后反复出...|
|  1|      69964|教资教育知识与能力|中学课程|        课程概述|              课程理论流派|中学|        |主张课程内容的组织以儿童活动为中心...|
|  2|      69983|教资教育知识与能力|中学课程|        课程组织|                  课程内容|中学|        | 简述课程内容的三种文本表现形式1课...|
|  3|      70079|教资教育知识与能力|中学课程|        课程组织|                  课程内容|中学|        |简述课程计划的含义和内容课程计划是...|
|  4|      70090|教资教育知识与能力|中学课程|        课程概述|                课程的类型|中学|        |在中学阶段开设的语文数学物理化学等...|
|  5|      70091|教资教育知识与能力|中学课程|        课程组织|                  课程内容|中学|        |编写教材教科书的直接依据是课程计划...|

#

结果

DataFrame[_c0: string, question_id: string, 科目: string, 专项: string, 一级考点: string, 二级考点: string, 学段: string, 二级学段: string, stem: string]

#查看列名

dfcsv.columns
Out[97]:
['_c0', 'question_id', '科目', '专项', '一级考点', '二级考点', '学段', '二级学段', 'stem']

删除某列
方法一

dfcsv.drop('_c0').drop(dfcsv.stem)
DataFrame[question_id: string, 科目: string, 专项: string, 一级考点: string, 二级考点: string, 学段: string, 二级学段: string]

列重命名 question-id:id, 科目:subject

dfcsv=dfcsv.withColumnRenamed("科目",'subject').withColumnRenamed("question_id",'id')
dfcsv
DataFrame[id: string, subject: string, 专项: string, 一级考点: string, 二级考点: string, 学段: string, 二级学段: string]

查看数据类型

dfcsv.dtypes
Out[125]:
[('id', 'string'),
 ('subject', 'string'),
 ('专项', 'string'),
 ('一级考点', 'string'),
 ('二级考点', 'string'),
 ('学段', 'string'),
 ('二级学段', 'string')]

查看前几行




In [129]:

dfcsv.take(3)
​
Out[129]:
[Row(id='69963', subject='教资教育知识与能力', 专项='中学课程', 一级考点='课程组织', 二级考点='课程内容', 学段='中学', 二级学段=' '),
 Row(id='69964', subject='教资教育知识与能力', 专项='中学课程', 一级考点='课程概述', 二级考点='课程理论流派', 学段='中学', 二级学段=' '),
 Row(id='69983', subject='教资教育知识与能力', 专项='中学课程', 一级考点='课程组织', 二级考点='课程内容', 学段='中学', 二级学段=' ')]

In [130]:
dfcsv.head(4)

Out[130]:
[Row(id='69963', subject='教资教育知识与能力', 专项='中学课程', 一级考点='课程组织', 二级考点='课程内容', 学段='中学', 二级学段=' '),
 Row(id='69964', subject='教资教育知识与能力', 专项='中学课程', 一级考点='课程概述', 二级考点='课程理论流派', 学段='中学', 二级学段=' '),
 Row(id='69983', subject='教资教育知识与能力', 专项='中学课程', 一级考点='课程组织', 二级考点='课程内容', 学段='中学', 二级学段=' '),
 Row(id='70079', subject='教资教育知识与能力', 专项='中学课程', 一级考点='课程组织', 二级考点='课程内容', 学段='中学', 二级学段=' ')]


type(dfcsv)
Out[131]:
pyspark.sql.dataframe.DataFrame


修改数据类型

#更改数据类型ID-int
from pyspark.sql.types import IntegerType
dfcsv=dfcsv.withColumn("id",dfcsv['id'].cast(IntegerType()))
dfcsv

DataFrame[id: int, subject: string, 专项: string, 一级考点: string, 二级考点: string, 学段: string, 二级学段: string]
In [134]:



排序

dfcsv.sort('id',ascending=False)


#混合排序
dfcsv.sort(dfcsv.一级考点.desc(),dfcsv.二级考点.asc()).show()





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值