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

エマ

pysparkデータフレームに500列あります...一部は文字列型、一部はint、一部はブール値(100ブール値の列)です。これで、すべてのブール列に2つの異なるレベル(はいといいえ)があり、それらを1/0に変換したいと思います。

文字列の場合、passed、failed、nullの3つの値があります。これらのヌルを0に置き換えるにはどうすればよいですか?fillna(0)は整数でのみ機能します

 c1| c2 |    c3 |c4|c5..... |c500
yes| yes|passed |45....
No | Yes|failed |452....
Yes|No  |None   |32............

私がする時

df.replace(yes,1)

次のエラーが発生します:

ValueError: Mixed type replacements are not supported
karma4917

文字列の場合、passed、failed、nullの3つの値があります。これらのヌルを0に置き換えるにはどうすればよいですか?fillna(0)は整数でのみ機能します

まず、インポートする場合点灯

from pyspark.sql.functions import when, lit

DataFrameにこれらの列があると仮定します

# Reconstructing my DataFrame based on your assumptions
# cols are Columns in the DataFrame
cols = ['name', 'age', 'col_with_string']

# Similarly the values
vals = [
     ('James', 18, 'passed'),
     ('Smith', 15, 'passed'),
     ('Albie', 32, 'failed'),
     ('Stacy', 33, None),
     ('Morgan', 11, None),
     ('Dwight', 12, None),
     ('Steve', 16, 'passed'), 
     ('Shroud', 22, 'passed'),
     ('Faze', 11,'failed'),
     ('Simple', 13, None)
]

# This will create a DataFrame using 'cols' and 'vals'
# spark is an object of SparkSession
df = spark.createDataFrame(vals, cols)

# We have the following DataFrame
df.show()

+------+---+---------------+
|  name|age|col_with_string|
+------+---+---------------+
| James| 18|         passed|
| Smith| 15|         passed|
| Albie| 32|         failed|
| Stacy| 33|           null|
|Morgan| 11|           null|
|Dwight| 12|           null|
| Steve| 16|         passed|
|Shroud| 22|         passed|
|  Faze| 11|         failed|
|Simple| 13|           null|
+------+---+---------------+

次を使用できます。

  • withColumn() -使用する列を指定します。
  • isNull() -属性がnullと評価された場合trueと評価されるフィルター
  • lit() -リテラルの列を作成します
  • when()else() -列に関する条件をチェックするために使用されます

nullの値を0に置き換えることができます

df = df.withColumn('col_with_string', when(df.col_with_string.isNull(), 
lit('0')).otherwise(df.col_with_string))

# We have replaced nulls with a '0'
df.show()

+------+---+---------------+
|  name|age|col_with_string|
+------+---+---------------+
| James| 18|         passed|
| Smith| 15|         passed|
| Albie| 32|         failed|
| Stacy| 33|              0|
|Morgan| 11|              0|
|Dwight| 12|              0|
| Steve| 16|         passed|
|Shroud| 22|         passed|
|  Faze| 11|         failed|
|Simple| 13|              0|
+------+---+---------------+

あなたの質問のパート1-はい/いいえブール値-あなたはブール値の100列があると言いました。このために、私は通常、更新された値でテーブルを再構築するか、UDFを作成してYesまたはNoに対して1または0を返します。

さらに2つの列can_voteとcan_lottoをDataFrame(df)に追加しています

df = df.withColumn("can_vote", col('Age') >= 18)
df = df.withColumn("can_lotto", col('Age') > 16) 

# Updated DataFrame will be
df.show()

+------+---+---------------+--------+---------+
|  name|age|col_with_string|can_vote|can_lotto|
+------+---+---------------+--------+---------+
| James| 18|         passed|    true|     true|
| Smith| 15|         passed|   false|    false|
| Albie| 32|         failed|    true|     true|
| Stacy| 33|              0|    true|     true|
|Morgan| 11|              0|   false|    false|
|Dwight| 12|              0|   false|    false|
| Steve| 16|         passed|   false|    false|
|Shroud| 22|         passed|    true|     true|
|  Faze| 11|         failed|   false|    false|
|Simple| 13|              0|   false|    false|
+------+---+---------------+--------+---------+

can_voteおよびcan_lottoと同様の列があると仮定します(ブール値はYes / Noです)

次のコード行を使用して、ブール型のDataFrameの列をフェッチできます。

col_with_bool = [item[0] for item in df.dtypes if item[1].startswith('boolean')]

これはリストを返します

['can_vote', 'can_lotto']

UDFを作成し、このタイプのリストの各列を反復処理して、1(はい)または0(いいえ)を使用して各列を点灯させることができます。

参考までに、以下のリンクを参照してください

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

Pyspark:データフレーム内で出現するすべての値をnullに置き換えます

分類Dev

pysparkは、データフレーム内の複数の値をnullに置き換えます

分類Dev

値を別のデータフレームの値に置き換えます

分類Dev

データフレーム内の他の属性の値に応じて、変数のすべてのNa値を「Y」または「N」に置き換えます

分類Dev

データフレームの値を別のデータフレームの値に置き換えます

分類Dev

データフレーム内のさまざまな空の値をすべて置き換えて、「-」などではなくすべてNaNにする方法

分類Dev

データフレーム内のすべての特定の値を置き換えます

分類Dev

データフレームは、1と0のすべてのTrue値とFalse値を置き換えます

分類Dev

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

分類Dev

データフレーム内の選択したセル値を別の別のデータフレームの値に置き換えます

分類Dev

データフレーム内のすべての値を(マージではなく)別のデータフレームから参照されている値に置き換える/置換する

分類Dev

100を超えるデータフレーム内のすべての値を100に相対的な値に置き換えます。つまり、120から80

分類Dev

データフレーム内のnull値を他のデータフレームに置き換えます

分類Dev

行の値をRの別のデータフレームの特定の値に置き換えます

分類Dev

データフレーム内のコンマ区切り値を別のデータフレームの値に置き換えます

分類Dev

別の列に応じてデータフレーム列の値を条件に置き換えます

分類Dev

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

分類Dev

条件に基づいて、データフレームの特定の値を別のデータフレームの値に置き換えます

分類Dev

データフレームの値をマージして、Rの別のデータフレームの値に置き換えます

分類Dev

PysparkでデータフレームのすべてのNull値を置き換える方法

分類Dev

PysparkでデータフレームのすべてのNull値を置き換える方法

分類Dev

欠落しているデータを、別のデータフレーム内の一致する行の値に置き換えます

分類Dev

同じデータフレーム内の別の列の値に基づいてデータフレーム内の値を置き換える方法は?

分類Dev

パンダ:条件に基づいて、データフレームの値を別のデータフレームの値に置き換えます

分類Dev

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

分類Dev

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

分類Dev

空の値をデータフレーム内の他の列の値に置き換えます

分類Dev

特定の関数を適用して、データフレーム内の別の列の基準に基づいて列の値を置き換えます

Related 関連記事

  1. 1

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

  2. 2

    Pyspark:データフレーム内で出現するすべての値をnullに置き換えます

  3. 3

    pysparkは、データフレーム内の複数の値をnullに置き換えます

  4. 4

    値を別のデータフレームの値に置き換えます

  5. 5

    データフレーム内の他の属性の値に応じて、変数のすべてのNa値を「Y」または「N」に置き換えます

  6. 6

    データフレームの値を別のデータフレームの値に置き換えます

  7. 7

    データフレーム内のさまざまな空の値をすべて置き換えて、「-」などではなくすべてNaNにする方法

  8. 8

    データフレーム内のすべての特定の値を置き換えます

  9. 9

    データフレームは、1と0のすべてのTrue値とFalse値を置き換えます

  10. 10

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

  11. 11

    データフレーム内の選択したセル値を別の別のデータフレームの値に置き換えます

  12. 12

    データフレーム内のすべての値を(マージではなく)別のデータフレームから参照されている値に置き換える/置換する

  13. 13

    100を超えるデータフレーム内のすべての値を100に相対的な値に置き換えます。つまり、120から80

  14. 14

    データフレーム内のnull値を他のデータフレームに置き換えます

  15. 15

    行の値をRの別のデータフレームの特定の値に置き換えます

  16. 16

    データフレーム内のコンマ区切り値を別のデータフレームの値に置き換えます

  17. 17

    別の列に応じてデータフレーム列の値を条件に置き換えます

  18. 18

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

  19. 19

    条件に基づいて、データフレームの特定の値を別のデータフレームの値に置き換えます

  20. 20

    データフレームの値をマージして、Rの別のデータフレームの値に置き換えます

  21. 21

    PysparkでデータフレームのすべてのNull値を置き換える方法

  22. 22

    PysparkでデータフレームのすべてのNull値を置き換える方法

  23. 23

    欠落しているデータを、別のデータフレーム内の一致する行の値に置き換えます

  24. 24

    同じデータフレーム内の別の列の値に基づいてデータフレーム内の値を置き換える方法は?

  25. 25

    パンダ:条件に基づいて、データフレームの値を別のデータフレームの値に置き換えます

  26. 26

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

  27. 27

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

  28. 28

    空の値をデータフレーム内の他の列の値に置き換えます

  29. 29

    特定の関数を適用して、データフレーム内の別の列の基準に基づいて列の値を置き換えます

ホットタグ

アーカイブ