如何将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
相关产品推荐
相关产品推荐

