我想删除列中的最后一个字符并将列转换为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
答案 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)