Как использовать регулярное выражение в фрейме данных pandas с разными записями в столбце?

#python #regex #dataframe

#питон #регулярное выражение #фрейм данных

Вопрос:

Я застрял с небольшой проблемой с python и регулярными выражениями. У меня есть таблица pandas с записями с другим порядком построения, см. Ниже.

  ---------------------------------------------- 
|                    Total                     |
 ---------------------------------------------- 
| Total Price: 4 x 2 = 8                       |
| Total Price 200 Price_per_piece 10 Amount 20 |
 ---------------------------------------------- 
 

Я хочу разделить записи в столбце «Всего» на 3 других столбца, как показано ниже.
Нужно ли мне сначала разделить эти столбцы на 2 подмножества и выполнять разные регулярные выражения или у вас, ребята, есть какие-то другие решения / идеи?

  ------- ----------------- -------- 
| Total | Price_per_piece | Amount |
 ------- ----------------- -------- 
|     8 |               4 |      2 |
|   200 |              10 |     20 |
 ------- ----------------- -------- 
 

Комментарии:

1. Вы можете использовать что-то вроде этого re.compile("(d )D (d )D (d )")

Ответ №1:

Попробуйте это:

 dtotal = ({"Total":["Total Price: 4 x 2 = 8","Total Price 200 Price_per_piece 10 Amount 20"]})
dt = pd.DataFrame(dtotal)

data = []
for item in dt['Total']:
    regex = re.findall(r"(d )D (d )D (d )",item)
    regex = (map(list,regex))
    data.append(list(map(int,list(regex)[0])))
dftotal = pd.DataFrame(data, columns=['Total','Price_per_piece','Amount'])
print(dftotal)
 

Вывод:

    Total  Price_per_piece  Amount
0      4                2       8
1    200               10      20