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

在Kaggle中将数据集Expenses列从object类型转换为float类型

解决Pandas中Float列科学计数法显示问题

你遇到的科学计数法是Pandas的显示格式设置问题,不是数据本身的类型错误——转换后的float数值是正确的,只是默认显示规则导致了科学计数法的呈现。以下是几种实用的解决方法:

方法1:修改全局显示规则

通过设置Pandas的全局显示选项,让所有float列都以常规数字格式展示,可按需指定小数位数:

import pandas as pd

# 示例:保留1位小数,禁用科学计数法
pd.options.display.float_format = '{:.1f}'.format

# 查看数据即可看到常规格式
print(df_clean['Expenses'])

如果希望数值自动适配格式(大数值、小数值都用常规形式),可以用这个设置:

pd.options.display.float_format = '{:g}'.format

方法2:单独调整目标列的显示

不想改动全局设置的话,可针对Expenses列单独处理,同时保留原float类型:

# 新增一列用于显示常规格式(原Expenses列仍为float类型)
df_clean['Expenses_show'] = df_clean['Expenses'].apply(lambda x: '{:.1f}'.format(x))

# 若在Jupyter Notebook中展示表格,也可以用style设置临时显示格式
df_clean.style.format({'Expenses': '{:.1f}'})

方法3:图表制作时的格式处理

如果只是担心图表中的数值显示,多数可视化库(如Matplotlib、Seaborn)会自动适配。需要自定义标签格式时,可在绘图时指定:

import matplotlib.pyplot as plt

plt.bar(df_clean.index, df_clean['Expenses'])
# 设置y轴标签为常规数字格式
plt.gca().yaxis.set_major_formatter(plt.FormatStrFormatter('%.1f'))
plt.show()

额外优化:你的原有代码可以简化

  • 替换+号时加上regex=False,避免正则匹配的潜在问题:df['Expenses'] = df['Expenses'].astype(str).str.replace('+', '', regex=False)
  • 过滤超大值9998948894时,可先转换为数值再过滤,不用转成字符串判断:
    df['Expenses'] = pd.to_numeric(df['Expenses'], errors='coerce')
    df_clean = df.dropna()
    df_clean = df_clean[df_clean["Expenses"] != 9998948894]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:57:19