如何在Pandas中处理以'-'为NULL值的CSV并转换为int类型
解决方案
方法1:读取CSV时直接识别空值
读取文件时通过na_values参数指定'-'为缺失值标记,pandas会自动将其转为NaN,之后直接转换为支持空值的整数类型Int64(大写I,区别于原生int)即可:
import pandas as pd df = pd.read_csv('data.csv', na_values='-') df['Column B'] = df['Column B'].astype('Int64')
方法2:读取后替换空值再转换
如果已经完成文件读取,可先将单独的'-'替换为NaN,再转换类型:
import pandas as pd import numpy as np df = pd.read_csv('data.csv') df['Column B'] = df['Column B'].replace('-', np.nan) df['Column B'] = df['Column B'].astype('Int64')
关键说明
- 选用
Int64而非原生int的原因:原生int无法存储缺失值(NaN),而Int64是pandas的可空整数类型,允许列中同时存在整数和缺失值。 - 该处理不会影响原有负数(如
-1472525)的取值,仅会识别单独的'-'为空值,带数字的负数会正常保留。
内容的提问来源于stack exchange,提问作者TrueLies
相关产品推荐
相关产品推荐

