PySparkデータフレームの2つの列をルックアップとして使用して、他のすべての列を置き換えます

テッド・モスビー

私は監督の階層であるデータセットを持っており、最初の2つの列があるidnameし、次の列がありlevel 1level 2level 3など。

それぞれlevel xxに、id列に関連する番号があります。

id     name         level 1   level 2   level 3
11     sup org 1    222       333       444
222    sup org 2    11        222       333 
333    sup org 3    11        222       333 
456    sup org 4    222       444       333

私が探しているのは

id     name         level 1     level 2     level 3
11     sup org 1    supr org 2  sup org 3   sup org 4
222    sup org 2    sup org 1   sup org 2   sup org 3 
333    sup org 3    sup org 1   sup org 2   sup org 3 
444    sup org 4    sup org 2   sup org 4   sup org 3

rdd関数を使おうとしましたが、関数がホワイトリストに登録されていないというエラーが表示されますか?

私は次のことを試しました:ここで、sup_lookupは上の表の最初の2列で、は表sup_org全体です

dict1 = [row.asDict() for row in sup_lookup.collect()]

mapping_expr = create_map([x for x in chain(*dict1.items())])


df = sup_org.withColumn('Level1', mapping_expr[sup_org['Level 1']]).withColumn('Level 2', mapping_expr[sup_org['Level2']]).withColumn('Level3', mapping_expr[sup_org['Level 2']])

しかし、dict1リストに属性.items()がないことについてエラーが発生します

キゴシキンランチョウ

各レベルの列で自己結合を実行できます。

from pyspark.sql import functions as F

df1 = df.alias("df") \
    .join(df.alias("lvl1"), F.col("lvl1.id") == F.col("df.`level 1`"), "left") \
    .join(df.alias("lvl2"), F.col("lvl2.id") == F.col("df.`level 2`"), "left") \
    .join(df.alias("lvl3"), F.col("lvl3.id") == F.col("df.`level 3`"), "left") \
    .selectExpr("df.id", "df.name", "lvl1.name as  `level 1`", "lvl2.name as `level 2`", "lvl3.name as `level 3`")

df1.show()
    
#+---+---------+---------+---------+---------+
#| id|     name|  level 1|  level 2|  level 3|
#+---+---------+---------+---------+---------+
#|222|sup org 2|sup org 1|sup org 2|sup org 3|
#|333|sup org 3|sup org 1|sup org 2|sup org 3|
#|444|sup org 4|sup org 2|sup org 4|sup org 3|
#| 11|sup org 1|sup org 2|sup org 3|sup org 4|
#+---+---------+---------+---------+---------+

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Forループのデータフレームのすべての列の「-」値を置き換えます

分類Dev

データフレームの他の列の基準を使用して、ベクトル内の重複する値を置き換えます

分類Dev

データフレーム内の列のすべての値をpysparkに置き換えます

分類Dev

pandasデータフレームのすべての列を1つの列に置き換えます

分類Dev

R:線を使用してデータフレームの1つの列を他のすべての列と一緒にプロットする

分類Dev

Pythonデータフレーム:他の列の値を比較して、1つの列のデータをクリーンアップします

分類Dev

別のデータフレームのインデックスに基づいてすべての列の値を置き換えます

分類Dev

別のデータフレームの行の値を使用して、あるデータフレームの列のすべての値を置き換えます(行名と列名で一致)。置換は文字です

分類Dev

すべての列と他の列の比率を使用してデータフレームを作成します

分類Dev

パンダを使用してデータフレーム列の特定の値を置き換えます

分類Dev

R:行/列を使用してデータフレームの値を別の値に置き換えます

分類Dev

2つの同一のデータフレームの列をループしてプロットします

分類Dev

カンマ区切りの列の値を別のデータフレームに基づくルックアップに置き換えて、新しい列を作成します

分類Dev

Rを使用して、一致ルックアップデータフレームに基づいてデータフレームの複数の列の因子レベルを置き換える方法

分類Dev

別のデータフレームのインデックスを使用して、データフレームの行を置き換えます

分類Dev

pandasデータフレームの1つを除くすべての列で欠落している値を置き換えます

分類Dev

ルックアップデータフレームを使用してデータフレームの値を置き換える

分類Dev

ハッシュマップを介して他の列に基づいてデータフレーム列の値を設定または置換する

分類Dev

共有インデックスに基づいて、他のデータフレームのすべての列に1つの列を追加します

分類Dev

pandasデータフレームで正規表現を使用して列の値を置き換えます

分類Dev

別のデータフレームのルックアップを使用して、あるデータフレームのテキストを置き換えます

分類Dev

paste()を使用してプログラムでデータフレームを指定し、インデックスの値を置き換えます

分類Dev

データフレーム列の特殊文字を置き換えようとしています

分類Dev

ルックアップデータフレームを使用して、プログラムでデータフレーム列の名前を変更します

分類Dev

文字列をインデックスとして2つのデータフレームを連結します

分類Dev

str_replace_allを使用してデータフレームのダッシュを置き換えます

分類Dev

ルックアップテーブルを使用して、csvファイルのn番目の列を置き換えます

分類Dev

パンダのデータフレーム内のすべての文字列を置き換えます(Python)

分類Dev

pandasデータフレームのすべての列の整数をTrue / Falseに置き換えます

Related 関連記事

  1. 1

    Forループのデータフレームのすべての列の「-」値を置き換えます

  2. 2

    データフレームの他の列の基準を使用して、ベクトル内の重複する値を置き換えます

  3. 3

    データフレーム内の列のすべての値をpysparkに置き換えます

  4. 4

    pandasデータフレームのすべての列を1つの列に置き換えます

  5. 5

    R:線を使用してデータフレームの1つの列を他のすべての列と一緒にプロットする

  6. 6

    Pythonデータフレーム:他の列の値を比較して、1つの列のデータをクリーンアップします

  7. 7

    別のデータフレームのインデックスに基づいてすべての列の値を置き換えます

  8. 8

    別のデータフレームの行の値を使用して、あるデータフレームの列のすべての値を置き換えます(行名と列名で一致)。置換は文字です

  9. 9

    すべての列と他の列の比率を使用してデータフレームを作成します

  10. 10

    パンダを使用してデータフレーム列の特定の値を置き換えます

  11. 11

    R:行/列を使用してデータフレームの値を別の値に置き換えます

  12. 12

    2つの同一のデータフレームの列をループしてプロットします

  13. 13

    カンマ区切りの列の値を別のデータフレームに基づくルックアップに置き換えて、新しい列を作成します

  14. 14

    Rを使用して、一致ルックアップデータフレームに基づいてデータフレームの複数の列の因子レベルを置き換える方法

  15. 15

    別のデータフレームのインデックスを使用して、データフレームの行を置き換えます

  16. 16

    pandasデータフレームの1つを除くすべての列で欠落している値を置き換えます

  17. 17

    ルックアップデータフレームを使用してデータフレームの値を置き換える

  18. 18

    ハッシュマップを介して他の列に基づいてデータフレーム列の値を設定または置換する

  19. 19

    共有インデックスに基づいて、他のデータフレームのすべての列に1つの列を追加します

  20. 20

    pandasデータフレームで正規表現を使用して列の値を置き換えます

  21. 21

    別のデータフレームのルックアップを使用して、あるデータフレームのテキストを置き換えます

  22. 22

    paste()を使用してプログラムでデータフレームを指定し、インデックスの値を置き換えます

  23. 23

    データフレーム列の特殊文字を置き換えようとしています

  24. 24

    ルックアップデータフレームを使用して、プログラムでデータフレーム列の名前を変更します

  25. 25

    文字列をインデックスとして2つのデータフレームを連結します

  26. 26

    str_replace_allを使用してデータフレームのダッシュを置き換えます

  27. 27

    ルックアップテーブルを使用して、csvファイルのn番目の列を置き換えます

  28. 28

    パンダのデータフレーム内のすべての文字列を置き換えます(Python)

  29. 29

    pandasデータフレームのすべての列の整数をTrue / Falseに置き換えます

ホットタグ

アーカイブ