簡體   English   中英

從現有數據框創建新列

[英]Create new column from existing Dataframe

我有一個數據框,並嘗試根據以下條件從現有列創建一個新列。

由指定的列EVENT_TYPE組數據只能過濾,其中列具有價值列車的行並將其命名為X。 新列的值為X.sum / X.length

這是輸入數據框

+-----+-------------+----------+--------------+------+
|   id|   event_type|  location|fault_severity|source|
+-----+-------------+----------+--------------+------+
| 6597|event_type 11|location 1|            -1|  test|
| 8011|event_type 15|location 1|             0| train|
| 2597|event_type 15|location 1|            -1|  test|
| 5022|event_type 15|location 1|            -1|  test|
| 5022|event_type 11|location 1|            -1|  test|
| 6852|event_type 11|location 1|            -1|  test|
| 6852|event_type 15|location 1|            -1|  test|
| 5611|event_type 15|location 1|            -1|  test|
|14838|event_type 15|location 1|            -1|  test|
|14838|event_type 11|location 1|            -1|  test|
| 2588|event_type 15|location 1|             0| train|
| 2588|event_type 11|location 1|             0| train|
+-----+-------------+----------+--------------+------+

我想要以下輸出。

 +--------------+------------+-----------+
 |              | event_type | PercTrain |
 +--------------+------------+-----------+
 |event_type 11 |   7888     | 0.388945  |
 |event_type 35 |   6615     | 0.407105  |
 |event_type 34 |   5927     | 0.406783  |
 |event_type 15 |   4395     | 0.392264  |
 |event_type 20 |   1458     | 0.382030  |
 +--------------+------------+-----------+

我已經嘗試過此代碼,但這會引發錯誤

    EventSet.withColumn("z" , when($"source" === "train" , sum($"source") / length($"source"))).groupBy("fault_severity").count().show()

這里的EventSet是輸入數據幀

提供所需輸出的Python代碼是

event_type_unq['PercTrain'] = event_type.pivot_table(values='source',index='event_type',aggfunc=lambda x: sum(x=='train')/float(len(x))) 

我想您想獲得火車價值的百分比。 所以,這是我的代碼,

val df2 = df.select($"event_type", $"source").groupBy($"event_type").pivot($"source").agg(count($"source")).withColumn("PercTrain", $"train" / ($"train" + $"test")).show

並給出如下結果:

+-------------+----+-----+------------------+
|   event_type|test|train|         PercTrain|
+-------------+----+-----+------------------+
|event_type 11|   4|    1|               0.2|
|event_type 15|   5|    2|0.2857142857142857|
+-------------+----+-----+------------------+

希望對您有所幫助。

暫無
暫無

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

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