#python #pandas #dataframe #numpy
#питон #панды #фрейм данных #тупица
Вопрос:
У меня есть такой фрейм данных.
данные |
---|
‘(п) яблоко (/п) (п) мальчик (/п) (п) кот (/п)’ |
————————————- |
‘(п) яблоко (п) (п) мальчик (/п)’ |
и я хочу что-то вроде этого:
данные |
---|
‘(п) 1.яблоко (/п) (п) 2.мальчик (/п) (п) 3.cat (/п)’ |
——————————————- |
‘(п) 1.яблоко (п) (п) 2.мальчик (/п)’ |
Я хочу добавить нумерацию для каждого тега » (p)» для каждой строки. Строка может содержать любое количество
теги, поэтому я хочу добавить в соответствии с этим. Пожалуйста, помогите мне решить эту проблему.
Комментарии:
1. Подсказка:
df['data'].str.replace
примите шаблоны регулярных выражений. Вы можете извлечь шаблон, добавить перечисление, а затем добавить(p)
обратную сторону. Пожалуйста, покажите часть ваших усилий в этом вопросе.2. извините, я плохо разбираюсь в регулярных выражениях. не могли бы вы, пожалуйста, помочь мне с этим. Нужно ли мне сначала подсчитать количество тегов «p» для перечисления?
Ответ №1:
Я бы сопоставил шаблон регулярного выражения, а затем перестроил (p)...(/p)
элемент:
import re import pandas as pd # Test DataFrame df = pd.DataFrame({"data":["(p)apple(/p)(p)boy(/p)(p)cat(/p)","(p)apple(/p)(p)boy(/p)"]}) pattern = re.compile("(p)(.*?)(/p)") df["data"].apply(lambda x: [f'(p){i 1} {s}(/p)' for i, s in enumerate(pattern.findall(x))])
Комментарии:
1. Большое Вам спасибо за этот ответ. Это сработало для меня.