#pandas
Вопрос:
У меня есть столбец pandas df со значениями, подобными этому: 000000000056H, 000000000193E. Мне нужно удалить начальные нули и изменить последнюю букву на соответствующее число, например, a = 1, e = 5 и т.д. В этих примерах значения должны быть 568 и 1935.
Я пытался преобразовать в int, но это не работает, вероятно, из-за конечного символа.
Я попробовал .strip(«0»), но получил ошибку «Серия» объект не имеет атрибута «полоса»
Может ли кто-нибудь предложить какую-либо помощь в этом вопросе? Я новичок в python, так что это выходит за рамки моих очень ограниченных знаний!
Тиа
Ответ №1:
IIUC,
import string
import pandas as pd
s = pd.Series(['0000000056H', '00000000193E'])
repdict = {v:str(k) for k, v in dict(enumerate(string.ascii_uppercase, start=1)).items()}
s.str.strip('0').replace(repdict, regex=True)
Выход:
0 568
1 1935
dtype: object
Комментарии:
1. это выглядит здорово, как бы вы применили это к колонке?
2. Вместо s используйте df[‘colname’].
Ответ №2:
это сработало для меня — большое спасибо
импорт строки импорт панд в качестве pd
repdict = {v:str(k) для k, v в dict(перечислить(строка. ascii_uppercase, начало=1)).элементы()} s.str.полоса(‘0’).заменить(repdict, регулярное выражение=True)
Комментарии:
1. @вместо того, чтобы публиковать это здесь, вы можете принять соответствующее решение. Пожалуйста, удалите этот ответ.