Изменение значений колонки датафрейма согласно условию
Есть датафрейм, который содержит колонки со значениями
engine_name | type
----------------------
'3.0 AT' | A
'4.0 AMT' | A
'1.6 CVT' | B
'AT' | C
...
Колонка type имеет значение С только в том случае, если в колонке engine_name значение только из букв. Хочу привести колонку engine_name к виду
'AT'
'AMT'
'CVT'
'AT'
...
Т.е убираем все цифры из значений столбца, оставляем только буквы. Хотел сделать list_comprehension и приравнять его колонке датафрейма, однако вылезает ошибка из-за того что есть значения только с буквами. В итоге сделал так:
engine_names = []
for name in df.engine_name:
try:
engine_names.append(name.split(' ')[1])
except Exception as e:
print(e)
engine_names.append(name)
continue
df.engine_name = engine_names
Вопрос: можно ли это как-то более лаконично оформить без использования try-except,а например с проверкой по другой колонке?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
df["new"] = df["engine_name"].str.replace(r"^[\d\.]*\s*", "")
результат:
In [5]: df
Out[5]:
engine_name type new
0 3.0 AT A AT
1 4.0 AMT A AMT
2 1.6 CVT B CVT
3 AT C AT