В пандах, как заменить определенные элементы в столбце? - PullRequest
0 голосов
/ 16 ноября 2018

В питоне 3 и пандах у меня есть этот фрейм данных:

doacoes_d_2014.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 125082 entries, 1 to 427355
Data columns (total 15 columns):
uf                            125082 non-null object
partido_eleicao               125082 non-null object
cargo                         125082 non-null object
nome_completo                 125082 non-null object
cpf                           125082 non-null object
cpf_cnpj_doador               125082 non-null object
nome_doador                   125082 non-null object
valor                         125082 non-null float64
tipo_receita                  125082 non-null object
fonte_recurso                 125082 non-null object
especie_recurso               125082 non-null object
descricao                     125082 non-null object
cpf_cnpj_doador_originario    125082 non-null object
nome_doador_originario        125082 non-null object
tipo_doador_originario        125082 non-null object
dtypes: float64(1), object(14)
memory usage: 15.3+ MB

В столбце "cpf_cnpj_doador" содержатся коды в строковом формате, всегда состоящие из 11 цифр. Например:

'18286585291', '31601928220' and '06796478134'

Мне нужно создать новый столбец с тем же содержимым "cpf_cnpj_doador", но заменить первые три цифры на *, а последние две на *. Пример:

'***865852**', '***019282**' and '***964781**'

Пожалуйста, кто-нибудь знает, как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018
df["cpf_cnpj_doador"] = df.cpf_cnpj_doador.apply(lambda x: '***'+str(x)[3:9]+'**')
0 голосов
/ 17 ноября 2018

Для подхода на основе регулярных выражений вы можете сделать следующее:

df['cpf_cnpj_doador'].str.replace(r'^(.{3})(.*?)(.{2})$', '***\\2**', regex=True)
0 голосов
/ 16 ноября 2018

Вы можете использовать

df['new']='***'+df['cpf_cnpj_doador'].str[3:9]+'**'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...