簡體   English   中英

使用scala計算spark數據幀中列組合的實例

[英]Count instances of combination of columns in spark dataframe using scala

我在scala中有一個名為df的火花數據框,有兩列,比如a和b。 a列包含字母,b列包含下面的數字。

   a   b
----------
   g   0
   f   0
   g   0
   f   1

我可以使用不同的行

val dfDistinct=df.select("a","b").distinct

它給出了以下內容:

   a  b
----------
   g   0
   f   0
   f   1

我想添加另一個列,其中包含這些不同組合在第一個數據幀中出現的次數,所以我最終得到了

a  b  count
  ----------
  g  0   2
  f  0   1
  f  1   1

我不介意是否修改了原始命令,或者我對dfDistinct進行了單獨的操作,給出了另一個數據幀。

任何建議都非常感謝,我為這個問題的微不足道的性質道歉,但我對scala或spark中的這種操作並不是最有經驗的。

謝謝

院長

您可以簡單地聚合和計數:

df.groupBy($"a", $"b").count

或者更冗長一點:

import org.apache.spark.sql.functions.{count, lit}

df.groupBy($"a", $"b").agg(count(lit(1)).alias("cnt"))

兩者都等同於原始SQL聚合:

df.registerTempTable("df")

sqlContext.sql("SELECT a, b, COUNT(1) AS cnt FROM df GROUP BY a, b")

另見Cross Tabulation

val g="g"
val f = "f"
val df = Seq(
  (g, "0"),
  (f, "0"),
  (g, "0"),
  (f, "1")
).toDF("a", "b")
val res = df.stat.crosstab("a","b")
res.show

+---+---+---+
|a_b|  0|  1|
+---+---+---+
|  g|  2|  0|
|  f|  1|  1|

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM