Sparkデータフレームから列とレコードを削除
10787 ワード
Sparkデータフレームのカラムとレコードの削除
サマリ
a.ファンダスのdrop()
## axis = 0 (로우), axis = 1 (컬럼)
titanic_pdf_dropped = titanic_pdf.drop('Name', axis=1, inplace=False)
display(titanic_pdf_dropped.head())
display(titanic_pdf.head())
b.火花滴()-基本的な使い方
参照:https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.sql.DataFrame.drop.html2
単一のカラム名またはcol()形式のカラム名を入力して配置
注意カラムが存在しなくてもエラーが発生しない点
## 라이브러리 로드
from pyspark.sql.functions import col
## copy로 받기
titanic_sdf_copied = titanic_sdf.select('*')
## 단일 컬럼 삭제.
## drop() 메소드 인자로 단일 컬럼명 문자열, 또는 컬럼명 컬럼형을 입력.
titanic_sdf_copied = titanic_sdf_copied.drop('Name')
titanic_sdf_copied = titanic_sdf_copied.drop(col('Sex'))
titanic_sdf_copied.limit(10).show(truncate=False)
c.複数の列を削除する
from pyspark.sql.functions import col
## 여러개의 컬럼을 삭제할 시 list가 아니라 단일 컬럼명들을 각각 인자로 넣어 주어야 함.
titanic_sdf_copied.drop('Age', 'SibSp').limit(10).show()
## 아래는 오류 발생. 여러개의 컬럼들을 삭제 시 컬럼형 인자는 안됨.
titanic_sdf_copied.drop(col('Age'), col('SibSp')).limit(10).show()
## 아래는 오류 발생. 여러개의 컬럼들을 삭제 시 list 입력은 안됨.
titanic_sdf_copied.drop(['Age', 'SibSp']).limit(10).show()
## *으로 받아서, 수행
drop_columns = ['Age', 'SibSp']
drop_columns_col = [col('Age'), col('SibSp')]
titanic_sdf_copied.drop(*drop_columns).limit(10).show()
## 하지만 아래는 여전히 오류를 발생 시킴.
titanic_sdf_copied.drop(*drop_columns_col).limit(10).show()
d.特定の条件を満たす列を削除()
## 타입 확인
titanic_sdf_copied.dtypes
# 아래와 같이 logic으로 조건에 맞는 여러개의 컬럼들을 삭제할 수 있음.
drop_string_columns = [ column_name for column_name, column_type in titanic_sdf_copied.dtypes if column_type == 'string']
print('drop 컬럼명:', drop_string_columns)
titanic_sdf_copied.drop(*drop_string_columns).limit(10).show()
# Spark DataFrame은 특정 조건으로 로우를 삭제하기가 어려우므로 filter()로 특정 조건에 해당하지 않는 로우를 걸러내는 방식을 적용.
titanic_sdf_removed_Embarked_C = titanic_sdf.filter(col('Embarked') != 'C')
titanic_sdf_removed_Embarked_C.show()
Reference
この問題について(Sparkデータフレームから列とレコードを削除), 我々は、より多くの情報をここで見つけました https://velog.io/@baekdata/Spark-Spark-데이터프레임에서의-컬럼과-레코드-삭제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol