неожиданный символ после символа продолжения строки.Также сохранять строки после строк с плавающей запятой в панде. - PullRequest
0 голосов
/ 01 мая 2019

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

Например, столбец кадра данных выглядит следующим образом:

17.3

Hi Hello

Pranjal

17.1

[aasd]How are you

I am fine[:"]

Live Free

Итак, в этом я хочу сохранить:

Hi Hello

[aasd]How are you

и удалить все остальное.Я попробовал это со следующим кодом, но обнаружилась ошибка, говорящая «неожиданный символ после символа продолжения строки».Также я не знаю, поможет ли этот код моей цели

Удаление лишних строк

for ind in data.index:
    if re.search((([1-9][0-9]*\.?[0-9]*)|(\.[0-9]+))([Ee][+-]?[0-9]+)?, ind):
        ind+=1
    else:
        data.drop(ind)

1 Ответ

1 голос
/ 01 мая 2019

Ваше регулярное выражение должно быть строкой, вы не можете просто так написать.

re.search((('[1-9][0-9]*\.?[0-9]*)|(\.[0-9]+))([Ee][+-]?[0-9]+)?', ind):

edit - но на самом деле я думаю, что остальная часть вашего кода тоже неверна.

то, что вам действительно нужно, это что-то вроде этого:

import pandas as pd


l = ['17.3',
     'Hi Hello',
     'Pranjal',
     '17.1',
     '[aasd]How are you',
     'I am fine[:"]',
     'Live Free']

data = pd.DataFrame(l, columns=['col'])

data[data.col.str.match('\d+\.\d*').shift(1) == True]

логика:

если у вас есть кадр данных со столбцом со строковым типом (не работает для десятичного числа смешанного типа)и строку вы можете найти десятичные / целые записи с помощью регулярного выражения '\ d +.? \ d *'. Если вы сдвинете эту маску на единицу, она даст вам записи после совпадений. используйте их для выборастроки, которые вы хотите в вашем фрейме данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...