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

如何将pandas DataFrame指定列中仅浮点型数值转换为整型

问题原因

你的代码存在两个核心问题:

  • 误操作了ID列而非目标value列
  • 直接对整列使用astype转换时,只要列中存在非数值类型,errors='ignore'会直接跳过整列转换,不会逐元素判断处理

实现代码

import pandas as pd
import numpy as np

# 你给出的原始DataFrame,注意如果10-11是字符串,需要添加引号避免被计算为-1
df = pd.DataFrame({"ID": [1,2,3,4,5,6,7], "value": [10,10.00,"123JK",20,"10-11",11.00,12.00]})

# 定义逐元素转换逻辑
def convert_valid_to_int(x):
    # 处理原生浮点类型值
    if isinstance(x, float):
        return int(x) if x.is_integer() else x
    # 处理字符串格式的整数值,比如"10.00"
    try:
        num = float(x)
        return int(num) if num.is_integer() else num
    except (ValueError, TypeError):
        # 非数值内容直接返回原值
        return x

# 应用转换到value列
df['value'] = df['value'].apply(convert_valid_to_int)

转换效果

运行代码后输出的df和你期望的结果完全一致:

ID  value
0   1     10
1   2     10
2   3  123JK
3   4     20
4   5  10-11
5   6     11
6   7     12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:36:03