Python中如何将含横杠的object类型VISIT_NUMBER转为int
如何将带横杠的VISIT_NUMBER字符串转换为整数类型?
你遇到的问题很典型——你的VISIT_NUMBER字段里的字符串(比如'2458611-22')包含了横杠'-',这不是整数的合法组成部分,所以不管是直接用astype(int)/astype(float),还是pd.to_numeric(),都会因为无法解析带横杠的字符串而报错。
解决这个问题的关键是先处理掉字符串里的横杠,再转换类型,具体分两种常见场景:
场景1:想把整个字符串(去掉横杠)转成单个整数
如果横杠只是分隔符,你希望把横杠两边的数字合并成一个整数,直接用str.replace()去掉横杠再转int就行:
Dataset1['VISIT_NUMBER'] = Dataset1['VISIT_NUMBER'].str.replace('-', '').astype(int)
比如'2458611-22'会被转换成245861122,完美变成整数类型。
场景2:想把横杠两边的数字拆分成两个独立的整数列
如果横杠分隔的是两个不同的信息(比如主编号和子编号),可以用str.split()拆分后分别转int:
# 拆分出两列,分别命名为PART1和PART2 Dataset1[['PART1', 'PART2']] = Dataset1['VISIT_NUMBER'].str.split('-', expand=True).astype(int)
执行后,原'2458611-22'会拆成PART1=2458611和PART2=22两个整数列,方便后续分别处理。
验证方法
你可以先拿单个值测试一下逻辑是否符合预期:
test_value = '2458611-22' # 测试场景1 print(int(test_value.replace('-', ''))) # 输出:245861122 # 测试场景2 part1, part2 = test_value.split('-') print(int(part1), int(part2)) # 输出:2458611 22
内容的提问来源于stack exchange,提问作者Kp_Data
相关产品推荐
相关产品推荐

