Вы можете использовать df.column.str следующим образом.
df['a'] = df['a'].str.findall(r'[0-9.]+')
df = pd.DataFrame(df['a'].tolist())
print(df)
output:
0 1
0 3.49 11.10
1 4.49 22.12
Это будет работать для любого количества столбцов. Но, в конце концов, вы должны назвать эти столбцы.
df.columns = ['a'+str(i) for i in range(df.shape[1])]
Этот метод будет работать, даже если некоторые строки имеют различное количество числовых значений. как
df =pd.DataFrame({'a':['MULTIPOLYGON(((3.49)))' ,'MULTIPOLYGON(((4.49 22.12)))']})
a
0 MULTIPOLYGON(((3.49)))
1 MULTIPOLYGON(((4.49 22.12)))
Таким образом, ожидаемый результат будет
0 1
0 3.49 None
1 4.49 22.12
После именования столбцов с помощью,
df.columns = ['a'+str(i) for i in range(df.shape[1])]
Вы получите,
a0 a1
0 3.49 None
1 4.49 22.12