split 對列表進行切割,然后生產新的列表
from pyspark.sql.functions import split
# 對 key列按照 0-9之間的數字進行風格 重新命名為 s
df.select(split(df.key, '[0-9]+').alias('s'))
df1 = df.select(split(df.key, '[0-9]+').alias('s')) # 重新轉移變量給df1
df1.withColumn("sd",df1["s"][0]).show() # 把 分割出來的s 提取出第[0]個重新成立新行
to_jso 把每一行全部轉為,然后生產新的列表
from pyspark.sql.functions import to_json,struct
將每一行轉化為json 並將行名,命名為wang df.select(to_json(struct([df["key"]])).alias("wang")).show()
- withColumn(colName, col)
-
通過為原數據框 添加一個新列或 替換已存在的同名列而返回一個新數據框。
colName
是一個字符串, 為新列的名字。
col
為這個新列的 Column 表達式。withColumn
的第一個參數必須是已存在的列的名字,withColumn
的第二個參數必須是含有列的表達式。如果不是它會報錯AssertionError: col should be Column
。 -
df.withColumn('page_count', df.page_count+100).select("app_key","page_count").take(2)
[Row(app_key=u'2323423dsfds', page_count=110), Row(app_key=u'2323423dsfds', page_count=104)]
df.withColumn('avg', df.page_count/df.duration).select("app_key","avg").take(2)
[Row(app_key=u'2323423dsfds', avg=0.00012387736141220192), Row(app_key=u'2323423dsfds', avg=0.16666666666666666)]
作者:焉知非魚
鏈接:https://www.jianshu.com/p/604f5fd39ba6
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。