달나라 노트

Python pyspark : columns (spark dataframe의 column 리스트 반환) 본문

Python/Python pyspark

Python pyspark : columns (spark dataframe의 column 리스트 반환)

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

 

 

 

spark dataframe의 columns 속성을 이용하면 spark dataframe에 있는 column들의 list를 얻을 수 있습니다.

(pandas dataframe의 columns랑 비슷합니다.)

 

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)

list_columns = df_spark.columns
print(list_columns)


-- Result
['a', 'b', 'c']

 

 

 

 

 

columns attribute를 이용하여 추출한 column list와 select, col을 이용하여 원하는 column을 추출해낼 수 있습니다.

 

from pyspark.sql import SparkSession
from pyspark.sql.function 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)

list_columns = df_spark.columns
print(list_columns)


df_new_1 = df_spark.select( # 1
    col(list_columns[0]),
    col(list_columns[1])
)
df_new_1.show()


df_new_2 = df_spark.select( # 2
    df_spark.list_columns[0],
    df_spark.list_columns[1]
)
df_new_2.show()



-- Result
['a', 'b', 'c']

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

AttributeError: 'DataFrame' object has no attribute 'list_columns'

 

1. select와 col을 이용하여 list_columns에 있는 a, b 컬럼을 추출하는 과정입니다.

이것은 Error없이 실행됩니다.

 

2. 다만 select에는 col없이 df_spark.a 이런식으로 원하는 column을 추출할 수도 있는데,

df_spark.list_columns[0] 처럼 적게되면 list_columns[0]을 a로 인식하여 df_spark.a와 동일한 효과를 갖게 되는 것이 아닙니다.

df_spark.~~~는 df_spark에 존재하는 속성을 이용하겠다는 의미이므로 list_columns라는 속성을 찾게 됩니다.

하지만 spark dataframe에는 list_columns라는 속성이 없으므로 AttributeError가 발생하게됩니다.

 

 

 

 

 

 

 

 

728x90
반응형
Comments