2016-11-07 9 views
5

既存のデータフレーム(結合後に作成される)から複数の列を選択し、対象のテーブル構造としてfiledsを並べ替える場合。どのようにそれを行うことができますか?私が使ったアプローチは以下の通りです。ここでは、必要な列を選択することはできますが、順序どおりに行うことはできません。結合後のPysparkデータフレームで複数の列を選択して順序付ける方法

Required (Target Table structure) : 
hist_columns = ("acct_nbr","account_sk_id", "zip_code","primary_state", "eff_start_date" ,"eff_end_date","eff_flag") 

account_sk_df = hist_process_df.join(broadcast(df_sk_lkp) ,'acct_nbr','inner') 
account_sk_df_ld = account_sk_df.select([c for c in account_sk_df.columns if c in hist_columns]) 

>>> account_sk_df 
DataFrame[acct_nbr: string, primary_state: string, zip_code: string, eff_start_date: string, eff_end_date: string, eff_flag: string, hash_sk_id: string, account_sk_id: int] 


>>> account_sk_df_ld 
DataFrame[acct_nbr: string, primary_state: string, zip_code: string, eff_start_date: string, eff_end_date: string, eff_flag: string, account_sk_id: int] 

account_sk_idは2位にする必要があります。これを行う最善の方法は何ですか?

答えて

6

はOKであるべきではないexistings列または順序を反復することにより、単にリストを与えることで、列を選択してみてください:

account_sk_df_ld = account_sk_df.select(*hist_columns) 
+0

はい...それが私のために働いています。あなたは何が起こったか私に説明します..フィールドはリストにありました。 – user3858193

+0

スパークでは、名前を文字列で指定して列を選択できます(ただし、現在のデータフレームで一意の場合のみ)。 – Mariusz

関連する問題