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

Pandas DataFrame逐单元格按规则格式化数值并转字符串

Pandas条件格式化数值列方案

初始数据

示例中定义的初始DataFrame如下:

import pandas as pd
df = pd.DataFrame({
    'Parameter': ['a', 'b', 'c', 'd'],
    'Value': [0.222, 43544433.8383, 5462.2, 6888440902.223]
})

原始Value列为float浮点类型,数据明细:

ParameterValue (float类型)
a0.222
b43544433.8383
c5462.2
d6888440902.223

格式化规则

处理后Value列需转为str字符串类型,格式化逻辑:

  • 数值大于10000时,使用保留两位小数的科学计数法格式化
  • 数值小于等于10000时,固定保留两位小数格式化

期望输出效果:

ParameterValue (str类型)
a0.22
b4.35e+07
c5462.20
d6.89e+09

实现代码

无需写复杂逐行循环,两种轻量实现方式都可满足需求:

方式1:numpy.where向量化实现(大数据量下性能最优)

import numpy as np

df['Value'] = np.where(
    df['Value'] > 10000,
    df['Value'].map(lambda x: f"{x:.2e}"),
    df['Value'].map(lambda x: f"{x:.2f}")
)

方式2:单apply判断实现(写法最简洁,无需额外依赖)

df['Value'] = df['Value'].map(lambda x: f"{x:.2e}" if x > 10000 else f"{x:.2f}")

结果校验

执行代码后打印DataFrame和列类型,可确认输出完全符合预期:

print(df)
print(df.dtypes)

输出结果:

Parameter     Value
0         a      0.22
1         b  4.35e+07
2         c   5462.20
3         d  6.89e+09
Parameter    object
Value        object
dtype: object

格式化语法说明:.2e表示科学计数法保留两位小数,.2f表示固定小数位保留两位,和需求格式完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:51:30