[Pyspark] udf에서 2개 이상의 multiple column 리턴하기
글 작성자: _rian
import pyspark.sql.functions as F
from pyspark.sql.functions import udf
def fill_empty_data(ds, y, avg_prc):
data = {'ds' : ds, 'y' : y, 'avg_prc' : avg_prc}
df = pd.DataFrame(data)
date_range = pd.date_range(start=START_DATE, end=END_DATE)
df['ds'] = pd.to_datetime(df['ds'])
df = df.set_index('ds')
df = pd.merge(date_range.to_frame(), df, left_index=True, right_index=True, how='left')
df['ds'] df.index
missing_fill_val = {'avg_prc' : df.avg_prc.median(), 'y' : 0.0}
df.fillna(missing_fill_val, inplace=True)
result_col1 = df['ds'].astype(str).to_list()
result_col2 = df['y'].to_list()
result_col3 = df['avg_prc'].to_list
return result_col1, result_col2, result_col3
schema = StructType([
StructField('ds', ArrayType(StringType()), True),
StructField('y', ArrayType(FloatType()), True),
StructField('avg_prc', ArrayType(FloatType()), True)
])
fill_empty_data_udf = udf(fill_empty_data, schema)
data = data.withColumn('output', fill_empty_data_udf(F.col('ds'), F.col('y'), F.col('avg_prc')))\
.select(F.col('prd_no'), F.col('output.*')) # 원하는 칼럼명 입력.
'머신러닝 꿈나무 > Hands-on!' 카테고리의 다른 글
[Pyspark] Pyspark의 여러가지 함수들 (0) | 2021.11.12 |
---|---|
[핸즈온 머신러닝2] Chaper 5. 서포트 벡터 머신 (0) | 2021.01.24 |
[핸즈온 머신러닝2] Chapter 3. 분류 (0) | 2021.01.15 |
[핸즈온 머신러닝2] Chaper 2. 머신러닝 프로젝트 처음부터 끝까지 (0) | 2021.01.13 |
댓글
이 글 공유하기
다른 글
-
[Pyspark] Pyspark의 여러가지 함수들
[Pyspark] Pyspark의 여러가지 함수들
2021.11.12 -
[핸즈온 머신러닝2] Chaper 5. 서포트 벡터 머신
[핸즈온 머신러닝2] Chaper 5. 서포트 벡터 머신
2021.01.24 -
[핸즈온 머신러닝2] Chapter 3. 분류
[핸즈온 머신러닝2] Chapter 3. 분류
2021.01.15 -
[핸즈온 머신러닝2] Chaper 2. 머신러닝 프로젝트 처음부터 끝까지
[핸즈온 머신러닝2] Chaper 2. 머신러닝 프로젝트 처음부터 끝까지
2021.01.13