Используя регулярное выражение, это работает:
import pandas as pd
df = pd.DataFrame({'A': ['20*', 40, '30*' ], 'B': ['abc', 'bar', 'xyz']})
df.replace({'A': {r'(\d+)\*': r'\1'}}, regex=True, inplace=True)
print(df)
Скобки (\d+)
представляют собой группу захвата содержащуюся \d+
проверку строк, которые состоят из одной цифрыили больше.\1
- это обратная ссылка , которая обращается к первой группе захвата, определенной ранее в квадратных скобках.
Первое регулярное выражение в основном гласит: Найти все строки, которые состоят как минимум из одной цифры сзавершающий *
(в регулярном выражении экранируется как \*
, поскольку один *
соответствует нулю или более предыдущего символа).
Второй означает: использовать ранее захваченные цифры и вставить их,Вы можете изменить второе регулярное выражение на что-то вроде r'A\1B
, чтобы лучше понять, что это значит.