Python 将数据帧中的元素从字符串转换为浮点数

Python 将数据帧中的元素从字符串转换为浮点数,python,pandas,jupyter-notebook,Python,Pandas,Jupyter Notebook,我正在用Python Jupyter笔记本做一些数据分析 我知道以前有人问过这个问题,但我找不到解决这个问题的办法 我有一个数据框(称为数据),有3列;见上面的链接 注意:data.intermediate可以为每行包含多个航路点。data.start和data.end每行只有一对坐标 在查看行和列的数据类型时,我发现: data.dtypes start object intermediary object end object dtype:

我正在用Python Jupyter笔记本做一些数据分析

我知道以前有人问过这个问题,但我找不到解决这个问题的办法

我有一个数据框(称为数据),有3列;见上面的链接

注意:data.intermediate可以为每行包含多个航路点。data.start和data.end每行只有一对坐标

在查看行和列的数据类型时,我发现:

data.dtypes

start           object
intermediary    object
end             object
dtype: object
当我检查单个元素时

data.iloc[0,0]
> "('24.957055', ' 114.740156')"

type(data.iloc[0,0])

> str
到目前为止一切都很好。但是,我需要使用这些坐标来提供给GoogleMapsAPI,它们需要是浮点格式

如何将3列中每列的所有这些坐标对从字符串转换为浮点?

我试过了

data.iloc[0,0].astype(float)
> AttributeError: 'str' object has no attribute 'astype'

x = data.iloc[1,2]
type(x)  
> str
然后:

float(x) 
> ValueError: could not convert string to float: "('24.8913208', '114.5740475')"

pd.to_numeric(data.iloc[0,0])
> ValueError: Unable to parse string "('54.957055', ' -7.740156')" at position 0
我的理想输出:

start, intermediary, end
0   24.957055,114.740156    39.956915136264,-6.753690062122  34.957055,114.740156 
其中这些坐标对都是浮点数对


有人能指出我的错误吗?

由于您没有给出中间列的格式,如果有多个航路点,我将给出单个航路点的解决方案

基本上,每个单元格值中都有一个表示为字符串的元组。因此,您需要删除“额外字符串”部分,并将其转换为浮点元组。幸运的是,pandas有一个名为
applymap
的函数,您可以在其中传递自定义函数,它将应用于整个数据帧

>>> import re, ast
>>> # My custom function
>>> def convert_to_float(tup):
        tup = re.sub(r"\'|\s+", '', tup)
        tup = ast.literal_eval(tup)
        return tup

>>> df = df.applymap(convert_to_float)
>>> df.iloc[0,0]
(34.957055, 114.740156)
>>> type(df.iloc[0,0])
<class 'tuple'>
>>> type(df.iloc[0,0][0])
<class 'float'>
导入re,ast >>>#我的自定义函数 >>>def将_转换为_浮点(tup): tup=re.sub(r“\”\s+,“”,tup) tup=ast.literal\u eval(tup) 返回tup >>>df=df.applymap(将\u转换为\u浮点) >>>df.iloc[0,0] (34.957055, 114.740156) >>>类型(df.iloc[0,0]) >>>类型(df.iloc[0,0][0])
现在,您可以将此自定义函数扩展到数据中的多个航路点。

为什么您的某些列中间有撇号我将数据框保存到一个笔记本中的CSV中,当我在另一个笔记本中读取CSV时,我看到了撇号不,我是在问为什么您想要的输出有撇号抱歉,打字错误。现在已修复您可以添加CSV文件的条目吗