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

如何在pandas DataFrame指定列中将小数点放置在第2位数字后

Pandas指定列第2位数字后插入小数点实现方案

原有代码错误原因

  • apply传入的lambda参数x是B列的单个字符串元素,不需要再通过df[B][x]索引取值,你混淆了行索引和元素值
  • 对单个字符串调用仅Series支持的.str访问器,会直接触发报错
  • lambda内部额外嵌套列表推导式遍历全表属于冗余逻辑,apply本身会自动逐行处理列元素

正确实现代码

首先构造测试数据验证效果:

import pandas as pd

# 测试数据和你的输入结构一致,B列为object类型
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['15', '346.52', '25678']
})

处理逻辑:

# 第一步:移除B列所有原有小数点
df['B'] = df['B'].str.replace('.', '', regex=False)
# 第二步:第2位后插入小数点,自动处理长度<=2的情况
# 不需要数值计算可去掉.astype(float),保留字符串格式和预期显示完全一致
df['B'] = (df['B'].str[:2] + '.' + df['B'].str[2:]).str.rstrip('.').astype(float)

代码说明

  • 用Pandas原生的.str切片方法批量处理全列,无需嵌套循环或apply,性能更高
  • 对于长度等于2的数值,str[2:]返回空字符串,拼接后会得到末尾带小数点的字符串,用.rstrip('.')直接移除多余小数点
  • 处理后的输出和你要求的预期结果完全一致:
    A       B
    0  1  15.000
    1  2  34.652
    2  3  25.678
    

内容的提问来源于stack exchange,提问作者think-maths

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:06