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


12

「null」要素と数値要素で構成されるpysparkデータフレームを考えます。一般に、数値要素には異なる値があります。データフレームのすべての数値を定数の数値(たとえば、値1)に置き換えるにはどうすればよいですか?前もって感謝します!

pysparkデータフレームの例:

c1c2c310.0411.3521null1.23null1.2null

結果は次のようになります。

c1c2c3111121null13null1null

SOへようこそ!私たちがあなたをよりよく助けることができるように、いくつかのデータおよび/またはコード例を投稿できますか?
2016年

回答:


8

を使用litすると、列のすべての値が指定された値に変換されます。

データフレームのnull以外の値に対してのみこれを行うには、各列のnull以外の値をフィルタリングし、値を置き換える必要があります。whenこれを達成するのに役立ちます。

from pyspark.sql.functions import when   

df.withColumn('c1', when(df.c1.isNotNull(), 1))
  .withColumn('c2', when(df.c2.isNotNull(), 1))
  .withColumn('c3', when(df.c3.isNotNull(), 1))

これは次の結果になります:

c1c2c3111121null13null1null

また、これらのnull値を他の値に置き換える場合も、とotherwise組み合わせて使用できますwhen0そこに帰属させたいとしましょう:

from pyspark.sql.functions import when   

df.withColumn('c1', when(df.c1.isNotNull(), 1).otherwise(0))
  .withColumn('c2', when(df.c2.isNotNull(), 1).otherwise(0))
  .withColumn('c3', when(df.c3.isNotNull(), 1).otherwise(0))

これは次の結果になります:

c1c2c3111121013010

7

あなたの問題に従って、私はlitを使う方が簡単かもしれないと思います。これを試して-

from pyspark.sql.functions import lit
new_df = df.withColumn('column_name', lit(1))

それが役に立てば幸い!


2

複数の列がある場合、これは簡単です。

from pyspark.sql.functions import when   
cols = df.columns # list of all columns
for col in cols:
    df= df.withColumn(col, when(df[col]>0,1).otherwise(0))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.