我想删除列中的第一个和最后一个字符,并将该列转换为float。列的类型是对象。
我的列数据是这样的:
train['longtitude'].head()
0 (29.760427,
1 (29.760427,
2 (39.493240390000494,
3 (40.79373015200048,
4 (37.77493,
5 (39.952584,
我尝试了这段代码,但是没有用,请帮我怎么做。
train['longtitude']= train['longtitude'].map(lambda x: re.sub(r'(,', ' ', x)).replace('', np.float64(0)).astype('float64')
出现错误:
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-46-341a87b067e1> in <module>()
1
----> 2 train['longtitude']= train['longtitude'].map(lambda x: re.sub(r'(,', ' ', x)).replace('', np.float64(0)).astype('float64')
8 frames
pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()
/usr/lib/python3.6/sre_parse.py in _parse(source, state, verbose, nested, first)
766 if not source.match(")"):
767 raise source.error("missing ), unterminated subpattern",
--> 768 source.tell() - start)
769 if group is not None:
770 state.closegroup(group, p)
error: missing ), unterminated subpattern at position 0
我也尝试了这段代码,它认为另一个错误。
train['longtitude'].str.extract(r'(,').astype(float)
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-58-192a820f7be0> in <module>()
----> 1 train['longtitude'].str.extract(r'(,').astype(float)
8 frames
/usr/lib/python3.6/sre_parse.py in _parse(source, state, verbose, nested, first)
766 if not source.match(")"):
767 raise source.error("missing ), unterminated subpattern",
--> 768 source.tell() - start)
769 if group is not None:
770 state.closegroup(group, p)
error: missing ), unterminated subpattern at position 0
答案 0 :(得分:0)
如果您确实要删除第一个和最后一个字符,只需执行train['longitude'].str[1:-1].astype(float)
。
要解决您的问题:出现此错误的原因是,(
被视为正则表达式中捕获组的开始,因此您应该能够通过如下转义来对其进行修复:{{ 1}}
答案 1 :(得分:0)
此外,您也可以使用replace
方法尝试以下操作:
train['longitude'].str.replace("[\(,]", "", regex=True).astype(float)