c++ select函數_PySpark 操作函數一覽

88dbf99f7c5f6fa0612d912f9a41612b.png

PySpark 操作函數一覽

Created: Sep 14, 2020 10:28 AM Tags: Big Data, PySpark, Python, Spark

Pyspark.sql.functions

from pyspark.sql import functions as F

函數使用說明

基本數學函數類

  • abs
  • sincostanasinacosatansinhcoshtanh
  • ceilroundfloor
  • exploglog2powsqrtcbrt
  • factorial

特定類型

日期

  • current_datecurrent_timestampadd_monthsunix_timestamp
df = spark.createDataFrame([('2015-04-08',)], ['dt']
df.select(F.add_months(df.dt, 1).alias('next_month'))""""
+----------+
|next_month|
+----------+
|2015-05-08|
+----------+
"""
  • add_monthsdate_adddate_formatdate_subdate_truncdate_diff
  • dayofmonthdayofweekdayofyearweekofyear
  • hourlast_dayminutemonthmonths_betweennext_dayyear

字符

  • asciisubstringsubstring_index
  • base64unbase64
  • decodeencode
  • exprconv
  • format_string
  • length
  • lowerupper
  • reverse
  • size

Binary

  • binbitwiseNOT
  • hashmd5sha1sha2
  • hexunhex

角度

  • toDegreestoRadiansradians

數字

  • format_number

判斷

  • isnanisnull

統計計算

  • avgcorrcountcountDistinctcume_dist
  • greatestkurtosisvariance
  • maxminmeanrandrandnrank
  • skewnesssumsumDistinct

數組處理

  • flattensliceelement_atarray_contains、array_distinct、array_except、array_intersect、array_join、array_max、array_min、array_position、array_remove、array_repeat、array_sort、array_union、arrays_overlap、arrays_zip
# 數組列包含元素
df = spark.createDataFrame([(["a", "b", "c"],), ([],)], ['data'])
df.withColumn("array_contains", F.array_contains(df.data, "a")).show()"""
+---------+--------------+
|     data|array_contains|
+---------+--------------+
|[a, b, c]|          true|
|       []|         false|
+---------+--------------+
"""

數組函數說明

df = spark.createDataFrame([(([1, 2, 3], [2, 3, 4]))], ['vals1', 'vals2'])
df.show()
df_new = df.select(F.arrays_zip(df.vals1, df.vals2).alias('zipped'))
df_new.show()
row = df_new.collect()[0]
row['zipped'][0]['vals1'] == row['zipped'][0][0] == 1"""
+---------+---------+
|    vals1|    vals2|
+---------+---------+
|[1, 2, 3]|[2, 3, 4]|
+---------+---------++--------------------+
|              zipped|
+--------------------+
|[[1, 2], [2, 3], ...|
+--------------------+True
"""

列處理

  • coalesce
df = spark.createDataFrame([(None, None), (1, None), (None, 2)], ("a", "b"))
df.show()
df.withColumn('coalesce', F.coalesce(df.a, df.b)).show()"""
+----+----+
|   a|   b|
+----+----+
|null|null|
|   1|null|
|null|   2|
+----+----++----+----+--------+
|   a|   b|coalesce|
+----+----+--------+
|null|null|    null|
|   1|null|       1|
|null|   2|       2|
+----+----+--------+
"""
  • array
# 多列數據合并成單獨一列數組
df = spark.createDataFrame([('2015-04-08', 1, )], ['dt', 'int'])
df.select(F.array([df.dt, df.int]).alias("arr")).show()"""
+---------------+
|            arr|
+---------------+
|[2015-04-08, 1]|
+---------------+
"""
  • concatconcat_ws
df = spark.createDataFrame([('abcd','123')], ['s', 'd'])
df.withColumn('concat', F.concat_ws('-', df.s, df.d).alias('s')).show()
"""
+----+---+--------+
|   s|  d|  concat|
+----+---+--------+
|abcd|123|abcd-123|
+----+---+--------+
"""
  • colcolumnlit
df = spark.createDataFrame([(11, 12), (21, 22), (31, 32)], ("a", "b"))
df.withColumn('a+100', F.col('a')  + F.lit(100)).show()"""
+---+---+-----+
|  a|  b|a+100|
+---+---+-----+
| 11| 12|  111|
| 21| 22|  121|
| 31| 32|  131|
+---+---+-----+
"""
  • explodeexplode_outerposexplodeposexplode_outer
# 將 array/map 展開成新 dataframe 的行df = spark.createDataFrame([(1,2,3)], ArrayType(IntegerType()))
df.select(F.explode(df.value).alias("int")).show()"""
+---+
|int|
+---+
|  1|
|  2|
|  3|
+---+
"""df = spark.createDataFrame([({'a': 1, 'b': 2})], MapType(StringType(), IntegerType()))
df.select(F.explode(df.value).alias('key', 'value')).show()"""
+---+-----+
|key|value|
+---+-----+
|  a|    1|
|  b|    2|
+---+-----+
"""
  • from_csvfrom_jsonget_json_object
# 從 json string 提取對應的字段并擴展成列
import json
data = {'a': 1, 'b': [1,2,3]}
data_s = json.dumps(data)schema = StructType([StructField('a', IntegerType(), True),StructField('b', ArrayType(IntegerType()), True)
])df= spark.createDataFrame([(data_s)], schema=StringType())
df.show()"""
+--------------------+
|               value|
+--------------------+
|{"a": 1, "b": [1,...|
+--------------------+
"""df_from_json = df.withColumn('json', F.from_json(df.value, schema=schema))df_from_json.select(df_from_json.value, df_from_json.json.a.alias('value.a'), df_from_json.json.b.alias('value.b')
).show()"""
+--------------------+-------+---------+
|               value|value.a|  value.b|
+--------------------+-------+---------+
|{"a": 1, "b": [1,...|      1|[1, 2, 3]|
+--------------------+-------+---------+
"""
data = [("1", '''{"f1": "value1", "f2": "value2"}'''), ("2", '''{"f1": "value12"}''')]
df = spark.createDataFrame(data, ("key", "jstring"))
df.select(df.key, F.get_json_object(df.jstring, '$.f1').alias("c0"), F.get_json_object(df.jstring, '$.f2').alias("c1") ).show()"""
---+-------+------+
|key|     c0|    c1|
+---+-------+------+
|  1| value1|value2|
|  2|value12|  null|
+---+-------+------+
"""
  • create_mapmap_from_arraysmap_from_entriesmap_concatmap_keysmap_valuesmap_entries
df = spark.createDataFrame([([2, 5], ['a', 'b'])], ['k', 'v'])
df.select(F.map_from_arrays(df.k, df.v).alias("map")).show()"""
+----------------+
|             map|
+----------------+
|[2 -> a, 5 -> b]|
+----------------+
"""
  • regexp_extractregexp_replace
# 正則提取與正則替換
df = spark.createDataFrame([('100-200',)], ['str'])
df.select('str', F.regexp_extract('str', r'(d+)-(d+)', 1).alias('first'),F.regexp_replace('str', r'(d+)-(d+)', "$2-$1").alias('swap'),
).show()"""
+-------+-----+-------+
|    str|first|   swap|
+-------+-----+-------+
|100-200|  100|200-100|
+-------+-----+-------+
"""
  • udf

Pyspark.sql.types

Base 類型

  • DataType

基本類型

  • NullType
  • StringType
  • BinaryType
  • BooleanType
  • DateType
  • TimestampType
  • DecimalType
  • DoubleType
  • FloatType
  • ByteType
  • IntegerType
  • LongType
  • ShortType

疊加類型

ArrayType

df = spark.createDataFrame([([1,2,3])], schema=ArrayType(IntegerType()) )
df.show()
# +---------+
# |    value|
# +---------+
# |[1, 2, 3]|
# +---------+df.collect()[0].value[0]
# 1
# 默認的 column name 為 value

MapType

df = spark.createDataFrame([({'a': 1, 'b': 2})], schema=MapType(StringType(), IntegerType()) )
df.show()
# +----------------+
# |           value|
# +----------------+
# |[a -> 1, b -> 2]|
# +----------------+df.collect()[0]['value']['a']
# 1

StructField

# 需要搭配 StructType 使用
StructField('column_name', DataType, is_nullable)

StructType

df = spark.createDataFrame([(1,)], schema=StructType([StructField('col', IntegerType())]))
df.show()
"""
+---+
|col|
+---+
|  1|
+---+
"""# 復雜一些的情況
df = spark.createDataFrame([({'a': [2,3,4]},)], schema=StructType([StructField('col', MapType(StringType(), ArrayType(IntegerType())))]))
df.show()
"""
+----------------+
|             col|
+----------------+
|[a -> [2, 3, 4]]|
+----------------+
"""df.collect()[0]['col']['a'][0]
# 2

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode【7--整數反轉】 LeetCode【8--字符串轉整數】

整數反轉 題目描述 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 解題思路 x%10 取一位,x/10下一位,注意越界, 代碼實現 class Solution { public:int reverse(int x) {int sum 0;while(x){if(s…

word2003如何設置護眼模式_ERP系統上線,如何設置采購收貨的模式,提升企業的采購效率...

如何合理的規劃采購計劃上次去拜訪一個朋友,他們說公司既然出現沒有下達采購訂單,供應商也有送貨過來的事情,對于公司來說,這個是非常嚴重的問題。若用了ERP系統之后,如何避免類似的事情發生,今天我們來分享…

LeetCode【9-- 回文數】LeetCode【10 --正則表達式的匹配】

回文數 題目描述 判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 解題思路 判斷該數的逆序數是不是和原數相同 代碼實現 class Solution { public:bool isPalindrome(int x) {if(…

sun鍵盤沒有stop鍵_請教Sun鍵盤

請教Sun鍵盤(2011-12-24 06:01:11)標簽:計算機雜談請教Sun鍵盤Sun鍵盤上,Help和F1之間的空白鍵是干啥的?Space旁邊的兩個菱形標志的呢?Compose呢?謝謝!請教Sun鍵盤Space旁邊的兩個菱形標志是一個類似Ctrl、Alt的修飾鍵,叫Meta。可以用Meta;鍵名來定義…

LeetCode【11--盛水最多的容器】LeetCode【12 -- 整數轉羅馬數字】

盛水最多的容器 題目描述 給定 n 個非負整數 a1,a2,…,an,每個數代表坐標中的一個點 (i, ai) 。在坐標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共…

LeetCode【13--羅馬數字轉整數】LeetCode【14--最長的公共前綴】

羅馬數字轉整數 題目描述 羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。 例如, 羅馬數字 2 寫做 II ,即為兩個并列的 1。12 寫做 XII ,即為 X II 。 27 寫做 XXVII, 即為 XX…

linux 編譯3g驅動_linux下使用3G撥號上網 以及3g驅動設置

中興WCDMA模塊 Linux撥號流程Version 1.0目錄1. 測試準備……………………………………………………..…32. 撥號腳本………………………………………………………133. 撥號過程………………………………………………………161. 測試準備本文檔測試模塊:MF210(中興W…

文件壓縮(基于LZ77的壓縮)

LZ77壓縮原理 初始LZ77 LZ77是基于字節的通用壓縮算法,它的原理就是將源文件中的重復字節(即在前文中出現的重復字節)使用(offset,length,nextchar)的三元組進行替換 這里的 長度–offset,距離—length,先行緩沖匹配…

好中的圖像處理方面的期刊_約會中,注意這四個方面,幫助你把握好自己的真愛...

兩個人想要擁有一段美好的感情,那么男生就要掌握好一些技巧去追求對方,在追求的過程中,兩個人的約會也非常重要,畢竟只有約會過程中,女孩子才能夠看到你光鮮亮麗的一面,才能夠慢慢的接受你,如果…

kafka consumer配置拉取速度慢_Kafka消費者的使用和原理

這周我們學習下消費者,仍然還是先從一個消費者的Hello World學起:public class Consumer { public static void main(String[] args) { // 1. 配置參數 Properties properties new Properties(); properties.put("key.des…

前綴和

前綴和 輸入一個長度為n的整數序列。 接下來再輸入m個詢問,每個詢問輸入一對l, r。 對于每個詢問,輸出原序列中從第l個數到第r個數的和。 輸入格式 第一行包含兩個整數n和m。 第二行包含n個整數,表示整數數列。 接下來m行,…

子矩陣的和

題目描述 輸入一個n行m列的整數矩陣,再輸入q個詢問,每個詢問包含四個整數x1, y1, x2, y2,表示一個子矩陣的左上角坐標和右下角坐標。 對于每個詢問輸出子矩陣中所有數的和。 輸入格式 第一行包含三個整數n,m,q。 …

jmeter 循環取值賦值給form_JMeter系列(三)邏輯控制器詳解

循環控制器:指定迭代次數,可以用具體數字,也可以通過變量控制永遠:表示無限循環點擊查看示例:Jmeter實例(四)_圖片爬蟲簡單控制器:這是最基礎的一個控制器,它可以讓腳本分層,變成一個…

c 復雜的前置后置面試題_OPPO Reno拆解:優秀工藝由外而內,復雜用料不負旗艦之名...

OPPO的新系列Reno手機最近吸引了不少注意力,不管是消費者還是手機極客都對其優秀的性能和強大的配置抱有極大的興趣。最近,知名數碼博主愛玩客對Reno十倍變焦版進行了拆解,從內部結構向我們揭示了這部手機的強大之處。并且點評道:…

差分矩陣

題目描述 輸入一個n行m列的整數矩陣,再輸入q個操作,每個操作包含五個整數x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一個子矩陣的左上角坐標和右下角坐標。 每個操作都要將選中的子矩陣中的每個元素的值加上c。 請你將進行完所有操作后…

python常用的開發環境包括_Python語言主要包括哪些集成開發環境?_學小易找答案...

【填空題】Python的標準隨機數生成器模塊是【簡答題】Why does critical thinking matter?【簡答題】采集瓶子的外形進行創意設計 用點、線、面進行裝飾填充 A4紙手繪,構圖要有新意,要飽滿【簡答題】How can a lack of critical thinking cause a loss of personal freedom?【…

最長連續不重復子序列

題目描述 給定一個長度為n的整數序列,請找出最長的不包含重復數字的連續區間,輸出它的長度。 輸入格式 第一行包含整數n。 第二行包含n個整數(均在0~100000范圍內),表示整數序列。 輸出格式 共一行,包…

ocp跟oce的區別 oracle_Oracle視頻10g 11g認證視頻教程 OCA/OCP 從入門到精通 數據庫DBA...

一、認證Oracle OCP認證(Database 10g Administrator Certified Professional)為Oracle公司的數據庫專家的認證。擁有OCP認證說明你擁有了大型Oracle數據庫管理的技術能力,具備了成為大型企業核心數據庫系統管理員的資格。OCE 1Z0-051:Oracle Database 1…

小愛同學app安卓版_小愛同學app下載-小米小愛同學下載2.9.21安卓版-西西軟件下載...

小米小愛同學是小米AI音箱的配套軟件,小愛同學是AI音箱的擬人虛擬形象,是一個二次元的萌妹子,如果你購買了小米AI音箱可以通過跟小愛同學交流來讓小米智能音箱幫你完成你想要的服務。小愛同學支持海量互聯網內容,包括在線音樂&…

python畫太極八卦圖_先天太極八卦圖的唯一正確畫法

我們先百度一下先天太極八卦圖.↑,看看結果百度出來的圖片第一頁上半部分,結果非常驚人,40張圖片,沒有一張是正確的。錯誤原因分為兩大類:1.太極圖旋轉方向或陰陽魚所在位置錯誤 2.八卦中每卦的三爻畫法錯誤1. 先天太極…