Удаление символов из строки в пандах

У меня есть похожий вопрос к этому:Pandas DataFrame: удаляет ненужные части из строк в столбце.

Поэтому я использовал:

temp_dataframe['PPI'] = temp_dataframe['PPI'].map(lambda x: x.lstrip('PPI/'))

Большинство пунктов начинаются с «PPI /», но не все. Кажется, что когда элемент без суффикса PPI / столкнулся с этой ошибкой:

AttributeError: у объекта 'float' нет атрибута 'lstrip'

Я что-то здесь упускаю?

 bakkal20 июн. 2016 г., 12:06
Это вызвано отсутствующими значениями или фактическими значениями? Можете ли вы показать значение строки, которая вызывает это? (Пытаюсь узнать и понять здесь)

Ответы на вопрос(2)

использовать векторизациюstr.lstrip:

temp_dataframe['PPI'] = temp_dataframe['PPI'].str.lstrip('PPI/')

похоже, у вас могут отсутствовать значения, поэтому вы должны замаскировать их или заменить:

temp_dataframe['PPI'].fillna('', inplace=True)

или же

temp_dataframe.loc[temp_dataframe['PPI'].notnull(), 'PPI'] = temp_dataframe['PPI'].str.lstrip('PPI/')

может быть, лучший метод - это использовать фильтрstr.startswith и использоватьsplit и получить доступ к строке после префикса, который вы хотите удалить:

temp_dataframe.loc[temp_dataframe['PPI'].str.startswith('PPI/'), 'PPI'] = temp_dataframe['PPI'].str.split('PPI/').str[1]

Как @JonClements указал, чтоlstrip удаляет пробелы, а не префикс, который вам нужен.

Обновить

Другой метод - передать шаблон регулярного выражения, который ищет необязательный префикс, и извлечь все символы после префикса:

temp_dataframe['PPI'].str.extract('(?:PPI/)?(.*)', expand=False)
 EdChum20 июн. 2016 г., 12:00
@JonClements, это правда, обновит
 EdChum20 июн. 2016 г., 12:30
@JonClements, который тоже должен работать, добавлю, спасибо
 Jon Clements20 июн. 2016 г., 11:59
Не забывайте.lstrip вероятно, не то, что хочет ОП - он удалит все символы, которыеP, I или же/ с начала строки - это не удаление префикса, если он существует ...
 Jon Clements20 июн. 2016 г., 12:23
Или возможноtemp_dataframe['PPI'].str.extract('(?:PPI/)?(.*)', expand=False)
Решение Вопроса

использованиезамещать:

temp_dataframe['PPI'].replace('PPI/','',regex=True,inplace=True)

или жеstring.replace:

temp_dataframe['PPI'].str.replace('PPI/','')
 A Rob423 июн. 2016 г., 18:26
Спасибо за помощь. очень признателен!

Ваш ответ на вопрос