Is your Geo column converted to a string? df.Geo.apply(str) does not work in place and from your output it does not look that you actually converted it (no quotes, but it could be interpreter).
This worked for me:
EDIT: yes, if your column consists of dict/list, its much better to do it with direct access
This worked for me:
Output:In [176]: df = pd.DataFrame({'Geo':["{'coordinates': [39.11890951, -84.48903638], 'type': 'Point'}"]})
In [177]: df.loc[0, "Geo"]
Out[177]: "{'coordinates': [39.11890951, -84.48903638], 'type': 'Point'}"
In [178]: pattern = r".*\[(-*\d+\.\d+), (-*\d+\.\d+)\].*"
In [179]: df.Geo = df.Geo.str.replace(pattern, r"\1 \2")
In [180]: df.Geo[0]
Out[180]: '39.11890951 -84.48903638'
If you want to extract coordinates as seperate columns, you will need another split and convert to number. Or you can extract coordinates separately:df['long'] = np.float(df.Geo.str.replace(pattern, r"\1")) df['lat'] = np.float(df.Geo.str.replace(pattern, r"\2"))My re knowlodge is rudimentary, so its possible that the pattern I have used isnt the right one ....
EDIT: yes, if your column consists of dict/list, its much better to do it with direct access