Разделение ячеек фрейма данных, в которых встречается первое число

У меня есть столбец в моем фрейме данных, и я хотел бы разделить его там, где встречается первое числовое значение. Вот образец моих данных:

                                                    col
1                           Beb il Gisire, contrata 102
12                    Bungemma, territorium 90, 115, 130
13                               Territorium Binhise 188
14                                Contrata Bir Bahar 205
15                                Contrata Bir HaJar 168
16                                 Bir Kibir, contrata 7
17      Lu Burgu; Suburbium Castri Maris 5, 15, 23, 6...

Я не могу разделить по пробелам или по номерам, когда они меняются. Желаемый результат:

    1                           Beb il Gisire, contrata           102
    12                          Bungemma, territorium             90, 115, 130
    13                          Territorium Binhise               188
    14                          Contrata Bir Bahar                205
    15                          Contrata Bir HaJar                168
    16                          Bir Kibir, contrata               7
    17                          Lu Burgu; Suburbium Castri Maris  5, 15, 23, 6...

Как ваш желаемый результат?

Joe 10.08.2018 09:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
105
2

Ответы 2

Один из вариантов:

df['col1'] = df['col'].str.split('(\d)').str[0]
df['col2'] = df['col'].replace(to_replace=r'\b'+df['col1']+r'\b', value='',regex=True)

Выход:

                               col1              col2  
0           Beb il Gisire, contrata               102  
1             Bungemma, territorium      90, 115, 130  
2               Territorium Binhise               188  
3                Contrata Bir Bahar               205  
4                Contrata Bir HaJar               168  
5               Bir Kibir, contrata                 7  
6  Lu Burgu; Suburbium Castri Maris   5, 15, 23, 6...

.

Используйте шаблон регулярного выражения '(.*?)(\d.*)' для захвата / разделения групп.

In [237]: df.col.str.extract('(.*?)(\d.*)')
Out[237]:
                                   0                 1
1            Beb il Gisire, contrata               102
12             Bungemma, territorium      90, 115, 130
13               Territorium Binhise               188
14                Contrata Bir Bahar               205
15                Contrata Bir HaJar               168
16               Bir Kibir, contrata                 7
17  Lu Burgu; Suburbium Castri Maris   5, 15, 23, 6...

Другие вопросы по теме