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

如何将DataFrame中的数字格式化为带逗号的整数?遇报错求解决

解决Pandas DataFrame数值千分位格式化问题

错误原因

你遇到的int() argument must be string, a bytes-like object or a number, not 'DataFrame'错误,是因为直接将整个DataFrame对象传入int()函数,而int()只能处理单个数值或字符串,无法直接处理整个DataFrame结构。

解决方案

要实现先四舍五入取整,再添加千分位逗号的效果,可按以下步骤处理:

  1. 对目标数值列执行四舍五入取整操作
  2. 将取整后的数值格式化为带千分位逗号的字符串

完整代码如下:

import pandas as pd

# 初始化数据
data1 = {'Header':['L1','L2','L3'], 
         'Val1':[float(1000.2),float(2000.40),float(300.55)],
         'Val2':[float(4000.3),float(500.00),float(60000.55)]}
df = pd.DataFrame(data1)

# 1. 对数值列四舍五入取整
numeric_cols = ['Val1', 'Val2']
df[numeric_cols] = df[numeric_cols].round().astype(int)

# 2. 格式化为带千分位逗号的字符串
df[numeric_cols] = df[numeric_cols].applymap(lambda x: f"{x:,}")

# 输出符合要求的表格
print(df.to_markdown(index=False))

最终输出

| Header | Val1   | Val2    |
|--------|--------|---------|
| L1     | 1,000  | 4,000   |
| L2     | 2,000  | 500     |
| L3     | 301    | 60,001  |

补充说明

  • 若无需四舍五入、仅需截断小数部分,可将round().astype(int)替换为astype(int),但此操作会直接丢弃小数(如300.9会变为300,不符合你的期望输出)
  • applymap()可对DataFrame的每个元素应用格式化逻辑,适合多列批量处理
  • f"{x:,}"是Python内置的格式化语法,专门用于为整数添加千分位分隔符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:39:55