Python:提取函数,忽略i';我已经在regexr.com上验证过了

Python:提取函数,忽略i';我已经在regexr.com上验证过了,python,regex,string,geocode,Python,Regex,String,Geocode,我在熊猫数据表中有一列,其中包含一个带有城市和坐标的字符串。我想提取坐标 这应该是一个相对简单的练习: 下面是我用来进行提取的代码: p = r'(?P<latitude>-?\d+\.\d+).*?(?P<longitude>-?\d+\.\d+)' data[['latitude', 'longitude']] = data['geocode_result'].str.extract(p, expand=True) data p=r'(?p-?\d+\.\d+。*

我在熊猫数据表中有一列,其中包含一个带有城市和坐标的字符串。我想提取坐标

这应该是一个相对简单的练习:

下面是我用来进行提取的代码:

p = r'(?P<latitude>-?\d+\.\d+).*?(?P<longitude>-?\d+\.\d+)'
data[['latitude', 'longitude']] = data['geocode_result'].str.extract(p, expand=True)
data
p=r'(?p-?\d+\.\d+。*?(?p-?\d+\.\d+)
数据['纬度','经度']]=数据['geocode_结果']]。str.extract(p,expand=True)
数据
但正如你从我的专栏中看到的,在屏幕截图中,它列出了NaN

下面是正在验证的正则表达式,它正在捕获:

我错过了什么明显的东西吗?我只想从地理编码结果中获取坐标


谢谢你的例子对我有用,但是提取的类型是一个字符串,这让我怀疑你用来生成屏幕截图的任何代码都会被不是浮点值的值绊倒

尝试将值转换为浮点:

data[['latitude', 'longitude']] = data['geocode_result'].str.extract(p, expand=True).astype(float)

顺便说一下,我知道经度上的负号被漏掉了。但我想让它尽可能简单,而摘录仍然没有拉纬度和经度,这对我来说非常困惑。我曾尝试在提取之前将列转换为文本,但无论出于何种原因,都会删除数字:“geocode_result”列的类型为string。正则表达式匹配和提取是一种将文本(即字符串)作为输入并生成文本作为输出的操作。在本例中,由于您使用的是特定的正则表达式,我们知道生成的文本(例如“5.534454”)是浮点数的有效表示形式。因此,我们可以将匹配的文本转换为浮点。拼图中缺少的部分是生成屏幕截图的代码。正如我提到的,它似乎期望一个浮点值。我已经尝试添加add,它仍然返回NaN。我想你可能是对的,也许是正则表达式在寻找一个数字,但列的数据并没有存储为我已经将数据复制到csv,读入数据帧,提取,转换(如上所述),并将结果打印为浮点数。一切正常。如果问题仍然存在,则可能在报告代码中。问题在于
geocode()
返回的是
,而不是字符串。这个类有一些不同的行为。特别是,
\uu str\uu()
函数只返回地址,这就是为什么在转换为字符串时坐标消失的原因。处理这一问题的最简单方法可能是将
repr()。否则,可以显式提取组件。有关更多信息,请参阅。