панды питона как извлечь число из строки?

#python #python-3.x #pandas #dataframe

Вопрос:

У меня есть фрейм данных, и я хочу извлечь только число из строки и назначить тему еще одной новой строкой.

фрейм данных:

  type
gp250,sp280
 

ожидаемый результат для фрейма данных:

 type   price
gp      25
sp      280
 

Комментарии:

1. @Psidom да, сэр

2. Пожалуйста, объясните логику извлечения чисел. У вас также есть $ знак, так что это не совсем число.

3. логика будет заключаться в том, что нужно будет только извлечь номер. мы можем использовать пользовательский .str.replace метод для удаления $ из исходного кадра данных

4. снова я отредактировал свой вопрос

5. Пожалуйста, также проясните структуру строк. Будет ли число всегда в конце строк ? Может ли в каждой строке быть более одного числа ?

Ответ №1:

Вы можете использовать регулярное выражение для извлечения последовательных цифр строки, а затем explode преобразовать результат в несколько строк.

 import re
df["type"].apply(lambda x: re.findall("([0-9] )", x)).explode()
 

Ответ №2:

Предполагая, что у вас всегда есть шаблон с нецифровыми символами, за которыми следуют цифры, вы можете сначала split explode объединить строку в отдельные строки, а затем использовать .str.extract для извлечения нецифрового шаблона ( D* ) и числа ( d* ) в разные столбцы:

 df['type'].str.split(',').explode().str.extract('(?P<type>D*)(?P<price>d*)', expand=True)
  type price
0   gp   250
0   sp   280