2017-07-05 13 views
0

(条件に基づく):が、私は2列持っている私のデータフレームで

  1. 国の指標(例えばSK)
  2. ID_NUMBERを(通常は8桁、例:98341852)を

私はそれらを連結すると、それは簡単です:

sk_df['id'] = sk_df['country index'].str.cat(sk_df['id_number'].values.astype(str)) 

しかし、行の一部で列id_numberの桁数は8未満です。この場合、国インデックスとid_numberの間にセパレータとしてゼロを追加したいとします(たとえば、長さがid_numberの場合は6、変数間に8-6 = 2の桁を追加する場合はSK00813841)。 1ゼロなどを追加するよりも、id_number長は、7の場合)

私はこの試みた:

def indexing(row): 
    if row['id_number'].astype(str).str.len() == 8: 
     return row['country index'].str.cat(row['id_number'].values.astype(str)) 
    else: 
     sep_mult = 8 - row['id_number'].astype(str).str.len() 
     return row['country index'].str.cat(row['id_number'].values.astype(str),sep = '0'*sep_mult) 



sk_df['id'] = sk_df.apply(lambda row: indexing(row),axis = 1) 

をしかし、それは動作しません。 どうすればいいですか?

答えて

1

使用.zfill()

sk_df['id'] = sk_df['country index'] + sk_df['id_number'].astype(str).str.zfill(8) 
関連する問題