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

Python中批量处理DataFrame多列:删除数值后内容并转为float类型

高效处理DataFrame数值提取与类型转换

推荐方案:正则批量提取(一行搞定所有列)

不用写for循环,直接用pandas的批量字符串处理配合正则,一步完成提取和类型转换:

# 适配整数、浮点数的通用写法
food = food.apply(lambda col: col.str.extract(r'^(\d+\.?\d*)', expand=False).astype(float))
  • 正则^(\d+\.?\d*)会精准捕获单元格开头的数值部分,不管是整数(如"5 g")还是带小数点的浮点数(如"330.0 kcal")
  • apply自动遍历所有列,无需手动指定每一列

如果你的数据只有浮点数(和示例格式完全一致),也可以用更简洁的正则:

food = food.apply(lambda col: col.str.extract(r'^(\d+\.\d+)', expand=False).astype(float))

另一种方案:批量split处理

要是你更习惯用split方法,同样可以批量操作,不用逐列编写:

food = food.apply(lambda col: col.str.split().str[0].astype(float))
  • str.split()默认按空格分割单元格内容,取第一个元素就是纯数值部分,再转成float类型即可

补:之前regex未生效的原因

你之前用regex没成功,大概率是正则写法有误。比如用replace也能实现需求,只要匹配空格后的所有内容并替换为空:

food = food.replace(r'\s+.+$', '', regex=True).astype(float)

这里\s+.+$会匹配从第一个空格到单元格末尾的所有内容,替换后剩下纯数值,再转类型即可。

内容的提问来源于stack exchange,提问作者irene G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:32:12