You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中将字符串格式元组转换为浮点型列

问题分析与解决方法

错误原因

你的代码出错是因为Coordinate (X, Y)列的元素是字符串类型(例如"(46.8637, 2.3134)"),而非真正的元组/数值对。直接用location[n]会取字符串的第n个字符,而非坐标数值,这就是为什么得到的是单个数字(如4、6)。

可行解决方案

方案1:字符串拆分(推荐,高效简洁)

针对固定格式的坐标字符串,先去除括号,再按逗号分割后转成数值:

import pandas as pd

# 拆分坐标列为X、Y
temp_dict[['X', 'Y']] = temp_dict['Coordinate  (X, Y)'].str.strip('()').str.split(', ', expand=True).astype(float)
# 可选:删除原坐标列
temp_dict = temp_dict.drop('Coordinate  (X, Y)', axis=1)

方案2:正则表达式提取

如果坐标字符串格式有轻微变化(比如括号缺失、空格不一致),用正则匹配提取浮点数:

import pandas as pd
import re

def get_coords(s):
    # 匹配所有浮点数格式的内容
    nums = re.findall(r'\d+\.\d+', s)
    return pd.Series([float(nums[0]), float(nums[1])])

temp_dict[['X', 'Y']] = temp_dict['Coordinate  (X, Y)'].apply(get_coords)
# 可选删除原列
temp_dict = temp_dict.drop('Coordinate  (X, Y)', axis=1)

方案3:转回元组(适用于元组被序列化为字符串的场景)

如果你的数据原本是元组,但被误存为字符串(比如从CSV读取时自动转换),用ast.literal_eval还原成元组再拆分:

import pandas as pd
import ast

temp_dict[['X', 'Y']] = temp_dict['Coordinate  (X, Y)'].apply(ast.literal_eval).apply(pd.Series)
# 可选删除原列
temp_dict = temp_dict.drop('Coordinate  (X, Y)', axis=1)

内容的提问来源于stack exchange,提问作者David H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:32:21