在pandas数据帧中连接字符串和整数(基于条件)

时间:2017-07-05 08:26:20

标签: pandas

在我的数据框中,我有两列:

  1. 国家/地区索引(例如SK)
  2. id_number(通常为8位数,例如:98341852)
  3. 我想连接它们,这很容易:

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

    但是列id_number中的某些行的位数小于8.在这种情况下,我想在国家/地区索引和id_number之间添加零作为分隔符(例如,如果id_number的长度1}}是6我想在变量之间添加8-6 = 2个零:SK00813841。如果id_number长度为7,则加1等零)

    我试过了:

    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 个答案:

答案 0 :(得分:1)

使用.zfill()

sk_df['id'] = sk_df['country index'] + sk_df['id_number'].astype(str).str.zfill(8)