他の列の値に基づいてデータフレームに列を追加します

stackq

製品が(毎日)何回使用されたかを示すSparkデータフレームがあります。次のようになります。

| x_id | product | usage | yyyy_mm_dd | status |
|------|---------|-------|------------|--------|
| 10   | prod_go | 15    | 2020-10-10 | i      |
| 10   | prod_rv | 7     | 2020-10-10 | fc     |
| 10   | prod_mb | 0     | 2020-10-10 | n      |
| 15   | prod_go | 0     | 2020-10-10 | n      |
| 15   | prod_rv | 5     | 2020-10-10 | fc     |
| 15   | prod_mb | 1     | 2020-10-10 | fc     |
| 10   | prod_go | 20    | 2020-10-11 | i      |
| 10   | prod_rv | 11    | 2020-10-11 | i      |
| 10   | prod_mb | 3     | 2020-10-11 | fc     |
| 15   | prod_go | 0     | 2020-10-11 | n      |
| 15   | prod_rv | 5     | 2020-10-11 | fc     |
| 15   | prod_mb | 1     | 2020-10-11 | fc     |

ステータス列はに基づいていusageます。usageが0の場合、はになりますnusageが1から9の間の場合、statusfcになります。場合usageである> = 10は、その後、status私は次のようになります。

私は、このスパークデータフレームに二つの追加の列を紹介したい、ですdate_reached_fcdate_reached_iこれらの列は、の各ステータスに到達しmin(yyyy_mm_dd)ときx_idをそれぞれ保持する必要がありますproduct

サンプルデータに基づくと、出力は次のようになります。

| x_id | product | usage | yyyy_mm_dd | status | date_reached_fc | date_reached_i |
|------|---------|-------|------------|--------|-----------------|----------------|
| 10   | prod_go | 15    | 2020-10-10 | i      | null            | 2020-10-10     |
| 10   | prod_rv | 7     | 2020-10-10 | fc     | 2020-10-10      | null           |
| 10   | prod_mb | 0     | 2020-10-10 | n      | null            | null           |
| 15   | prod_go | 0     | 2020-10-10 | n      | null            | null           |
| 15   | prod_rv | 5     | 2020-10-10 | fc     | 2020-10-10      | null           |
| 15   | prod_mb | 1     | 2020-10-10 | fc     | 2020-10-10      | null           |
| 10   | prod_go | 20    | 2020-10-11 | i      | null            | 2020-10-10     |
| 10   | prod_rv | 11    | 2020-10-11 | i      | 2020-10-10      | 2020-10-11     |
| 10   | prod_mb | 3     | 2020-10-11 | fc     | 2020-10-11      | null           |
| 15   | prod_go | 0     | 2020-10-11 | n      | null            | null           |
| 15   | prod_rv | 5     | 2020-10-11 | fc     | 2020-10-10      | null           |
| 15   | prod_mb | 1     | 2020-10-11 | fc     | 2020-10-10      | null           |
mck

順序は質問とは少し異なりますが、結果は正しいはずです...基本的にminはウィンドウ上で使用whenし、関連する日付のみをフィルタリングするためにも使用します。

from pyspark.sql import functions as F, Window

df2 = df.withColumn(
    'date_reached_fc',
    F.min(F.when(F.col('status') == 'fc', F.col('yyyy_mm_dd'))).over(Window.partitionBy('x_id', 'product').orderBy('yyyy_mm_dd', 'usage'))
).withColumn(
    'date_reached_i',
    F.min(F.when(F.col('status') == 'i', F.col('yyyy_mm_dd'))).over(Window.partitionBy('x_id', 'product').orderBy('yyyy_mm_dd', 'usage'))
).orderBy('x_id', 'product', 'yyyy_mm_dd', 'usage')

df2.show()
+----+-------+-----+----------+------+---------------+--------------+
|x_id|product|usage|yyyy_mm_dd|status|date_reached_fc|date_reached_i|
+----+-------+-----+----------+------+---------------+--------------+
|  10|prod_go|   15|2020-10-10|     i|           null|    2020-10-10|
|  10|prod_go|   20|2020-10-11|     i|           null|    2020-10-10|
|  10|prod_mb|    0|2020-10-10|     n|           null|          null|
|  10|prod_mb|    3|2020-10-11|    fc|     2020-10-11|          null|
|  10|prod_rv|    7|2020-10-10|    fc|     2020-10-10|          null|
|  10|prod_rv|   11|2020-10-11|     i|     2020-10-10|    2020-10-11|
|  15|prod_go|    0|2020-10-10|     n|           null|          null|
|  15|prod_go|    0|2020-10-11|     n|           null|          null|
|  15|prod_mb|    1|2020-10-10|    fc|     2020-10-10|          null|
|  15|prod_mb|    1|2020-10-11|    fc|     2020-10-10|          null|
|  15|prod_rv|    5|2020-10-10|    fc|     2020-10-10|          null|
|  15|prod_rv|    5|2020-10-11|    fc|     2020-10-10|          null|
+----+-------+-----+----------+------+---------------+--------------+

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

他の列の値に基づいてデータフレームに列を追加します

分類Dev

他の列のデータフレームrの値に基づいて列を追加します

分類Dev

他の列の値に基づいてデータフレームに新しい列を追加する

分類Dev

他の列の結果に基づいて、データフレームに新しい列を追加します

分類Dev

他の列の値に基づいて、pandasデータフレームの列の値を設定します

分類Dev

他の2つの列データフレームに基づいて列の値を計算します

分類Dev

パンダのデータフレームの別の列の値に基づいて列を追加します

分類Dev

既存の列のカテゴリ値に基づいてデータフレームに列を追加します

分類Dev

他の列スパークの値に基づいてデータフレームに列を追加する方法

分類Dev

Rの他のデータフレームに値が存在するかどうかに基づいて、新しい列に新しい値を追加します

分類Dev

行の最初の値に基づいて、データフレームに新しい列を追加します

分類Dev

列の1つの値に基づいて、データフレームに行を追加します

分類Dev

条件に基づいて他のデータフレームから列を追加します

分類Dev

他の列に基づいてpysparkデータフレームに新しい列を追加する

分類Dev

特定の列の値に基づいてデータフレームの行を結合し、他の値を追加します

分類Dev

以前の値に基づいてパンダデータフレームに列を追加します

分類Dev

Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

分類Dev

既存の列の値に基づいてpandasデータフレームに新しい列を追加する

分類Dev

複数の列の値に基づいてデータフレームに新しい列を追加する

分類Dev

他の行の値に基づいてパンダのデータフレーム列を追加する方法

分類Dev

他の値に基づいてデータフレームの値を行に追加します

分類Dev

他のデータフレームに基づいて特定の列値を追加する

分類Dev

dplyrを使用して、他のデータフレームに基づいて新しい列を追加する

分類Dev

条件に基づいて、データフレーム列の値を別の列の値に変更します

分類Dev

pandasデータフレームの他の列に基づいて新しい列を作成します

分類Dev

パンダ:別のデータフレームの値に基づいて、データフレームに新しい列を追加します

分類Dev

列名に基づいてデータフレームに行を追加し、空の列にNAを追加します

分類Dev

他の2つのデータフレームの値に基づいて新しい列を作成する

分類Dev

pythonpandas-他のデータフレームの列の値に基づいてデータフレームの一部を取得します

Related 関連記事

  1. 1

    他の列の値に基づいてデータフレームに列を追加します

  2. 2

    他の列のデータフレームrの値に基づいて列を追加します

  3. 3

    他の列の値に基づいてデータフレームに新しい列を追加する

  4. 4

    他の列の結果に基づいて、データフレームに新しい列を追加します

  5. 5

    他の列の値に基づいて、pandasデータフレームの列の値を設定します

  6. 6

    他の2つの列データフレームに基づいて列の値を計算します

  7. 7

    パンダのデータフレームの別の列の値に基づいて列を追加します

  8. 8

    既存の列のカテゴリ値に基づいてデータフレームに列を追加します

  9. 9

    他の列スパークの値に基づいてデータフレームに列を追加する方法

  10. 10

    Rの他のデータフレームに値が存在するかどうかに基づいて、新しい列に新しい値を追加します

  11. 11

    行の最初の値に基づいて、データフレームに新しい列を追加します

  12. 12

    列の1つの値に基づいて、データフレームに行を追加します

  13. 13

    条件に基づいて他のデータフレームから列を追加します

  14. 14

    他の列に基づいてpysparkデータフレームに新しい列を追加する

  15. 15

    特定の列の値に基づいてデータフレームの行を結合し、他の値を追加します

  16. 16

    以前の値に基づいてパンダデータフレームに列を追加します

  17. 17

    Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

  18. 18

    既存の列の値に基づいてpandasデータフレームに新しい列を追加する

  19. 19

    複数の列の値に基づいてデータフレームに新しい列を追加する

  20. 20

    他の行の値に基づいてパンダのデータフレーム列を追加する方法

  21. 21

    他の値に基づいてデータフレームの値を行に追加します

  22. 22

    他のデータフレームに基づいて特定の列値を追加する

  23. 23

    dplyrを使用して、他のデータフレームに基づいて新しい列を追加する

  24. 24

    条件に基づいて、データフレーム列の値を別の列の値に変更します

  25. 25

    pandasデータフレームの他の列に基づいて新しい列を作成します

  26. 26

    パンダ:別のデータフレームの値に基づいて、データフレームに新しい列を追加します

  27. 27

    列名に基づいてデータフレームに行を追加し、空の列にNAを追加します

  28. 28

    他の2つのデータフレームの値に基づいて新しい列を作成する

  29. 29

    pythonpandas-他のデータフレームの列の値に基づいてデータフレームの一部を取得します

ホットタグ

アーカイブ