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

如何将CSV中location列的坐标值拆分至x、y两列

解决CSV中location列拆分到x、y列的问题

你的location列存储的是带方括号的字符串(比如"[60.0, 56.0]"),而非真正的Python列表,这是导致之前方法报错的核心原因。以下是两种可行的解决方案:

方案1:字符串清洗拆分

直接对字符串做清理和分割操作,步骤清晰:

# 移除字符串两端的方括号
df['location'] = df['location'].str.strip('[]')
# 按逗号分割为两列,同时去除每个元素的空格
df[['x', 'y']] = df['location'].str.split(',', expand=True).apply(lambda col: col.str.strip())
# 转换为整数类型(需保留浮点数则用astype(float))
df[['x', 'y']] = df[['x', 'y']].astype(int)
# 可选:删除原location列
df = df.drop('location', axis=1)

方案2:转换为列表后拆分

借助ast.literal_eval将字符串转成真实列表,再拆分:

import ast

# 把字符串形式的列表转为Python列表
df['location'] = df['location'].apply(ast.literal_eval)
# 将列表拆分为x、y两列
df[['x', 'y']] = pd.DataFrame(df['location'].tolist(), index=df.index)
# 转换为整数类型
df[['x', 'y']] = df[['x', 'y']].astype(int)
# 可选:删除原location列
df = df.drop('location', axis=1)

之前方法报错的原因

  • 方法1:df['location'].tolist()是把整个Series转成字符串列表,而非拆分每个字符串内的数值,自然无法生成x、y列。
  • 方法2:df[[0]]引用错误(你的DataFrame首列是location而非索引0),且split后的列保留了括号和空格,直接拼接无效。
  • 方法3:拆分后得到的是"[60.0"和" 56.0]"这类带冗余字符的列,未做清洗无法直接使用。

内容的提问来源于stack exchange,提问作者Michael Rees

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:25:24