как добавить нумерацию к каждому предложению с помощью python или панд?

#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. Большое Вам спасибо за этот ответ. Это сработало для меня.