pyspark 实践汇总2

今天继续汇总一下在使用pyspark中使用到的知识,想与我交流的话可以加群Python & Spark 636866908,或者加群R语言&大数据分析456726635。

1. 数据框添加一列全是0的值。

df.withColumn("newcolumn",df.id*0)      #使用数值型的一列id,然后该列每个元素乘以0生成新列newcolumn


2. 数据框左连接

newdf = df1.join(df2,df1.id == df2.id1,'left')  #进行左连接,即以左边数据框的id为基,df2.id1没在df1.id中的会填充null


3. 使用值填充数据框列中的null值

df.withColumn('newid',when(df.id.isNull(),df.label).otherwise(df.id)) #对于id列中的null值使用label列的值替换,注意这里使用了when,isNull,otherwise函数。


4. lzo格式的数据读取

df = sqlContext.read.json("user/zhangsan/data/*.lzo") #使用read.json函数读取data下的所有.lzo文件返回数据框格式。


5. 另一种修改列名的方法

df.select(col("id").alias("id1")) #使用alias函数将列id改成id1


6. jupter将数据框写到本地csv

df = df.toPandas()

df.to_csv("本地路径/df.csv",index=None)  # 将df.csv写到本地,且不要输出序号


7. filter过滤not isin操作

df.filter(df.id.isin(anlist) == False) 或者df.filter(~df.id.isin(anlist))  #筛选id不在anlist中的数据框


8. 数据框根据一列升序或降序排序

df.sort("id",ascending = False) #默认是True升序,False是降序


9. 将数据框的一列float值转成int

df.select(df.id.cast("int")) #把df中的id列由float型转为int,使用了cast函数。


10. 对数据框进行抽样

df.sample(False,0.5,22) #对df数据框使用sample进行抽样,False无放回抽样,抽样比例是0.5,seed是22


11.对数据框使用正则表达式筛选符合条件的数据

df.select(regexp_extract("id","((.*?)bc)",0).alias("newid")) #对df中的id列筛选最后字符是bc的数据,并修改id列名.

你可能感兴趣的:(pyspark)