如何将带前导零的数字列以字符串类型导入Pandas DataFrame?
解决Pandas导入带前导零列丢失格式的问题
嘿,刚接触Pandas遇到这种问题太正常了——明明指定了字符串类型,结果前导零还是没保住,确实头疼!咱们来试试这几个靠谱的解决办法:
方法1:用converters参数强制转字符串
dtype有时候会被Pandas的自动类型推断“干扰”,换成converters参数会更稳妥,它会逐行处理目标列的每一个值,强制转成字符串:
mydata = pd.read_csv("text_file.txt", sep="\t", converters={"header_col2": str})
方法2:关闭默认空值识别
如果你的文件里该列存在空值,Pandas默认会把空值转成NaN(浮点类型),这会导致整列的类型被“污染”。加上keep_default_na=False参数,让空值保留为空字符串,确保列是纯字符串类型:
mydata = pd.read_csv("text_file.txt", sep="\t", dtype={"header_col2": str}, keep_default_na=False)
方法3:切换到Python解析引擎
默认的C解析引擎在类型推断上比较严格,换成Python引擎会更灵活,有时候能解决类型识别的冲突:
mydata = pd.read_csv("text_file.txt", sep="\t", dtype={"header_col2": str}, engine="python")
验证是否成功
导入后可以用这两行代码确认:
# 查看列的类型 print(mydata['header_col2'].dtype) # 查看前几行的值,确认前导零存在 print(mydata['header_col2'].head())
以后处理编号、身份证号这类需要保留格式的列,优先用converters或者搭配上述参数,就能避免自动类型转换踩坑啦!
内容的提问来源于stack exchange,提问作者Flo P
相关产品推荐
相关产品推荐

