У меня есть столбец в моем фрейме данных, и я хотел бы разделить его там, где встречается первое числовое значение. Вот образец моих данных:
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...
Один из вариантов:
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...
Как ваш желаемый результат?