#python #pandas
#python #pandas
Вопрос:
Я хотел бы удалить первый и последний символы в столбце и преобразовать столбец в float. Тип столбца — object.
мои данные столбца, подобные этому :
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
Ответ №1:
Просто сделайте train['longitude'].str[1:-1].astype(float)
, если вы действительно хотите удалить первый и последний символы.
Для решения вашей проблемы: причина, по которой вы получаете эту ошибку, заключается в том, что (
рассматривается как начало группы захвата в регулярном выражении, поэтому вы должны быть в состоянии исправить это, экранировав его следующим образом: (
Ответ №2:
Кроме того, вы можете попробовать ниже, а также с помощью replace
метода:
train['longitude'].str.replace("[(,]", "", regex=True).astype(float)