#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