pyspark 데이터 프레임의 모든 숫자 값을 상수 값으로 바꿉니다.


12

'null'요소와 숫자 요소로 구성된 pyspark 데이터 프레임을 고려하십시오. 일반적으로 숫자 요소의 값은 다릅니다. 데이터 프레임의 모든 숫자 값을 상수 숫자 값 (예 : 값 1)으로 바꾸는 방법은 무엇입니까? 미리 감사드립니다!

pyspark 데이터 프레임의 예 :

c1c2c310.0411.35211.21.2

결과는 다음과 같아야합니다.

c1c2c311112111

SO에 오신 것을 환영합니다! 더 나은 도움을 드릴 수 있도록 데이터 및 / 또는 코드 예제를 게시 할 수 있습니까?
스테레오

답변:


8

를 사용 lit하면 열의 모든 값이 주어진 값으로 변환됩니다.

널이 아닌 데이터 프레임 값에 대해서만이를 수행하려면 각 열의 널이 아닌 값을 필터링하고 값을 바꿔야합니다. 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))

결과는 다음과 같습니다.

c1c2c311112111

당신이 너무 다른 값으로 그 널 (null) 값을 대체 할 경우에도, 당신은 사용할 수 otherwise와 함께 when. 0거기 에 대치하고 싶다고 가정 해 봅시다 .

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))

결과는 다음과 같습니다.

c1c2c311112101010

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.