반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Tkinter
- math
- Mac
- PANDAS
- 파이썬
- GIT
- matplotlib
- PySpark
- gas
- PostgreSQL
- dataframe
- Excel
- SQL
- Google Spreadsheet
- Kotlin
- Java
- c#
- Google Excel
- Python
- string
- numpy
- hive
- Github
- Apache
- array
- Redshift
- list
- django
- google apps script
Archives
- Today
- Total
달나라 노트
Python pyspark : select (Dataframe에서 column 추출하기) 본문
Python/Python pyspark
Python pyspark : select (Dataframe에서 column 추출하기)
CosmosProject 2021. 5. 19. 05:13728x90
반응형
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
반응형
'Python > Python pyspark' 카테고리의 다른 글
Comments