달나라 노트

Python pyspark : select (Dataframe에서 column 추출하기) 본문

Python/Python pyspark

Python pyspark : select (Dataframe에서 column 추출하기)

CosmosProject 2021. 5. 19. 05:13
728x90
반응형

 

 

 

spark dataframe에서 특정 컬럼의 정보만을 추출하려면 어떻게 해야하는지 봅시다.

 

from pyspark.sql import SparkSession
import pandas as pd

spark = SparkSession.builder.getOrCreate()

df_test = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [10.0, 3.5, 7.315],
    'c': ['apple', 'banana', 'tomato']
})

df_spark = spark.createDataFrame(df_test)

spark_col_a = df_spark.a # 1
print(spark_col_a) # 1

df_col_a = df_spark.select(df_spark.a) # 2
df_col_a.show() # 2

df_new = df_spark.select( # 3
    df_spark.a,
    df_spark.b
)
df_new.show() # 3



-- Result
Column<a>

+---+
|  a|
+---+
|  1|
|  2|
|  3|
+---+

+---+------+
|  a|     b|
+---+------+
|  1|  10.0|
|  2|   3.5|
|  3| 7.315|
+---+------+

1. <spark_dataframe>.<column_name> 형태의 구문은 해당 column 객체를 반환해줍니다.

 

2. <spark_dataframe>.select(<column_object>) 그리고 select method를 이러한 형태로 사용해서 특정 컬럼만을 추출할 수 있습니다.

 

3. select method에 여러 개의 column을 전달하여 2개 이상의 column들을 동시에 뽑아낼 수도 있습니다. 

 

 

 

 

 


 

 

 

 

 

 

 

 

from pyspark.sql import SparkSession
from pyspark.sql.functions import col
import pandas as pd

spark = SparkSession.builder.getOrCreate()

df_test = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [10.0, 3.5, 7.315],
    'c': ['apple', 'banana', 'tomato']
})

df_spark = spark.createDataFrame(df_test)

df_new = df_spark.select( # 1
    col('a'),
    col('b')
)
df_new.show() # 1



-- Result
+---+------+
|  a|     b|
+---+------+
|  1|  10.0|
|  2|   3.5|
|  3| 7.315|
+---+------+

1. 또 다른 방법으로 pyspark.sql.functions에 있는 col(<column_name>)이라는 키워드를 사용하여 원하는 column들을 뽑아낼 수 있습니다.

 

 

 

 

 

 

 


 

 

 

 

from pyspark.sql import SparkSession
import pandas as pd

spark = SparkSession.builder.getOrCreate()

df_test = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [10.0, 3.5, 7.315],
    'c': ['apple', 'banana', 'tomato']
})

df_spark = spark.createDataFrame(df_test)

def my_func(x):
    return x + 1

df_col_a = df_spark.select(my_func(df_spark.a))
df_col_a.show()


-- Result
+---------+
|  (a + 1)|
+---------+
|        2|
|        3|
|        4|
+---------+

그리고 select method에서 column 객체를 전달할 때

어떤 함수를 적용한 column 객체를 전달하면 위처럼 반환되는 컬럼 데이터에 해당 함수가 적용되어 반환됩니다.

 

 

 

 

 

 

 

 


 

 

 

 

 

from pyspark.sql import SparkSession
from pyspark.sql.functions import col
import pandas as pd

spark = SparkSession.builder.getOrCreate()

df_test = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [10.0, 3.5, 7.315],
    'c': ['apple', 'banana', 'tomato']
})

df_spark = spark.createDataFrame(df_test)

def my_func(x):
    return x + 1

df_col_a = df_spark.select(
    my_func(col('a')),
    col('b')
)
df_col_a.show()


-- Result
+---------+------+
|  (a + 1)|     b|
+---------+------+
|        2|  10.0|
|        3|   3.5|
|        4| 7.315|
+---------+------+

col 키워드를 사용한 select에서도 함수 적용이 가능합니다.

 

 

 

 

728x90
반응형
Comments