У меня есть следующий столбец в панде df:
| Primary_key |
|-------------|
| LIT1-1.10_t |
| LIT1-1.20_t |
| LIT1-1.30_t |
| LIT4-1.99_t |
| LIT4-1.88_t |
| LIT4-1.77_t |
Я хочу извлечь номер версии из 'Primary_key' (String); разделите его на номер версии и идентификатор и поместите их в новые столбцы, чтобы получить следующий вывод:
| Primary_key | version_nr | ID |
|--------------|------------|----|
| LIT1-1.10_t | 1 |10 |
| LIT1-1.20_t | 1 |20 |
| LIT1-1.30_t | 1 |30 |
| LIT4-1.999_t | 4 |999 |
| LIT4-1.888_t | 4 |888 |
| LIT4-1.777_t | 4 |777 |
Я думаю, pandas.Series.str.extractall
может быть решением для моей задачи, но у меня есть проблемы, чтобы правильно применить Я старался
df['ID'] = df['Primary_Key'].str.extractall(r'(\d{3})').unstack().apply(','.join, 1)
, чтобы извлечь все числа в один столбец ('ID'), чтобы разделить их на следующем шаге. Но с этим кодом я получаю только последние три цифры:
| Primary_key | ID |
|--------------|----|
| LIT1-1.10_t |Nan |
| LIT1-1.20_t |Nan |
| LIT1-1.30_t |Nan |
| LIT4-1.999_t |999 |
| LIT4-1.888_t |888 |
| LIT4-1.777_t |777 |
Надеюсь, у одного из вас опытных программистов есть идея, как решить эту проблему:)
PS: Я также попробовал регулярное выражение re.findall('\d+',...)
, но я думаю, что это не совсем колени пчелы.