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

如何将Pandas中object类型的列转换为float类型?

解决Pandas DataFrame字符串格式数值列表转浮点型列表的问题

你的需求是把存储为字符串格式的数值列表转换为实际的浮点型数值列表,以下是两种可靠的实现方法:

方法一:使用ast.literal_eval

ast.literal_eval是Python标准库中安全解析字符串为Python原生对象的工具,适合处理这种格式规范的字符串列表。

import pandas as pd
import ast

df = pd.DataFrame({'col1': ['[-0.8783137, 0.05478287, -0.08827557, 0.69203985, 0.06209986]', 
                            '[0.31444644, -0.6546649, 0.7211526, 0.9819127, 0.74042267]']})

# 将字符串解析为浮点型列表
df['col1'] = df['col1'].apply(ast.literal_eval)

# 验证结果:查看第一个元素的类型及其中元素的类型
print(type(df['col1'][0]))  # <class 'list'>
print(type(df['col1'][0][0]))  # <class 'float'>

方法二:使用json.loads

由于你的字符串格式完全符合JSON数组的规范,也可以用json模块来解析:

import pandas as pd
import json

df = pd.DataFrame({'col1': ['[-0.8783137, 0.05478287, -0.08827557, 0.69203985, 0.06209986]', 
                            '[0.31444644, -0.6546649, 0.7211526, 0.9819127, 0.74042267]']})

# 解析字符串为浮点型列表
df['col1'] = df['col1'].apply(json.loads)

# 验证结果
print(df['col1'].apply(lambda x: isinstance(x[0], float)).all())  # True

注意事项

  • 处理后,DataFrame的col1列类型仍为object,但列中的每个元素都是浮点型数值组成的列表,这是Pandas对列表类型数据的存储方式。
  • 如果字符串中存在格式错误(比如多余的符号、非数值内容),两种方法都会抛出异常,需要提前做数据清洗。

内容的提问来源于stack exchange,提问作者Badrun Nessa Antu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:15:02