如何删除列中的特殊字符并将列转换为浮点数据

时间:2019-04-23 09:10:41

标签: python pandas

我想删除列中的最后一个字符并将列转换为float。列的类型是对象。

我的专栏是这样的:

train['latitude'].head()
             -95.369803)
1             -95.369803)
2    -117.07184056399967)
3     -77.86070029399963)
4            -122.419416)
Name: latitude, dtype: object

我尝试了这段代码,但是出错了,

 train['latitude'] = train['latitude'].map(lambda x: re.sub(r')', ' ', x)).replace('', np.float64(0)).astype('float64')  

请帮助我如何将对象转换为浮点型

   ---------------------------------------------------------------------------
    error                                     Traceback (most recent call last)
    <ipython-input-99-b5cdc7554b0a> in <module>()
    ----> 1 df = train['latitude'].map(lambda x: re.sub(r')', ' ', x)).replace('', np.float64(0)).astype('float64')

    6 frames
    pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()

    /usr/lib/python3.6/sre_parse.py in parse(str, flags, pattern)
        867     if source.next is not None:
        868         assert source.next == ")"
    --> 869         raise source.error("unbalanced parenthesis")
        870 
        871     if flags & SRE_FLAG_DEBUG:

    error: unbalanced parenthesis at position 0

5 个答案:

答案 0 :(得分:3)

我认为列名是latitude

您实际上可以从列值中删除最后一个字符,然后将其转换为浮点数。

df["latitude"].astype(str).str[:-1].astype(np.float64)

答案 1 :(得分:2)

使用str.rstrip

例如:

import pandas as pd

df = pd.DataFrame({'latitude': ["-95.369803)", "-95.369803)", "-117.07184056399967)"]})
df["latitude"] = df["latitude"].str.rstrip(")").astype(float)
print(df)

输出:

     latitude
0  -95.369803
1  -95.369803
2 -117.071841

答案 2 :(得分:0)

您应该能够做到这一点:

rowMeans(read.table(text = string1, sep = ","))

答案 3 :(得分:0)

您可以这样做:

train['latitude'] = train['latitude'].str.replace(')', '').astype(np.float64)

现在,删除最后一个字符后,所有值都将变为浮点数。

答案 4 :(得分:0)

您可以尝试以下代码:

train['latitude'].str.extract(r'(-\d+.\d+)').astype(float)