将DataFrame列转换为Integer类型并删除非整数类型行的实现方案
Pandas DataFrame 列转整型并删除非整数行实现方法
以下基于pandas库操作,假设你需要处理的目标列名为target_col:
基础实现(仅排除无法转为数值的内容)
- 第一步:将目标列内容转为数值类型,无法转换的内容会自动设为NaN
import pandas as pd df['target_col'] = pd.to_numeric(df['target_col'], errors='coerce')
- 第二步:删除目标列为NaN的行,同时将剩余内容转为整数类型
# 这里使用Int64类型(大写I)是pandas支持空值的整数类型,无空值可替换为小写int df = df.dropna(subset=['target_col']).astype({'target_col': 'Int64'})
严格实现(同时排除取值为非整数的浮点数,如2.5、3.7等)
如果需要过滤掉小数部分非0的数值,仅保留本身为整数的内容,可以调整过滤逻辑:
import pandas as pd df['target_col'] = pd.to_numeric(df['target_col'], errors='coerce') # 同时过滤NaN和小数部分不为0的行 df = df[df['target_col'].notna() & (df['target_col'] % 1 == 0)].astype({'target_col': 'Int64'})
测试用例
你可以用以下测试数据验证效果:
# 原始测试数据 df = pd.DataFrame({'target_col': ['1', '2.5', '3', 'abc', 4.0, 5.7, None]}) # 执行上述严格实现代码后,剩余行的target_col值为1、3、4,类型为Int64
注意:如果你的原始数据处理后仍存在空值,必须使用Int64类型,小写int不支持列中存在空值,会强制转为float类型。
内容的提问来源于stack exchange,提问作者B2A3R9C9A
相关产品推荐
相关产品推荐

