Две операции REGEX только с одним выражением - PullRequest
0 голосов
/ 11 января 2020

Как выполнить серию действий для очистки этой строки ..

  • Удаление всего, что следует после символа - вроде 00058-541 = 00058
  • добавление нулей для почтовых индексов которые не содержат 5 цифр, например 58 = 00058 OR 9542 = 09542

data:

df = pd.DataFrame({ "Zip" : [501 , 38, 15 , 50501 , 80501 , 50501-514 , 85401-141 ]

Ответы [ 2 ]

2 голосов
/ 11 января 2020

Вы можете использовать .apply() / .map() с str.split и str.format:

df = pd.DataFrame({ "Zip" : ['501' , '38', '15' , '50501' , '80501' , '50501-514' , '85401-141' ]})

df['Zip'] = df['Zip'].apply(lambda x: '{:0>5}'.format(x.split('-')[0])) # or .map()
print(df)

Печать:

     Zip
0  00501
1  00038
2  00015
3  50501
4  80501
5  50501
6  85401

РЕДАКТИРОВАТЬ: Версия с f -строки:

df['Zip'] = df['Zip'].map(lambda x: f"{x.split('-')[0]:0>5}")
1 голос
/ 11 января 2020

IIU C,

Вы можете использовать str.replace и zfill, чтобы получить желаемый результат:

df['Zip'] = df['Zip'].astype(str).str.replace('-\d+','').str.zfill(5)

---

print(df)

       Zip
0    00501
1    00038
2    00015
3    50501
4    80501
5    50501
6    85401
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...