Как удалить специальные символы в столбцах и преобразовать столбцы в float

#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)