如何移除Pandas数据列末尾的.0并修正数据类型?
解决DataFrame合并后ID列带.0且类型异常的问题
核心原因
合并后ID列为object类型,是因为列中混合了浮点数(如23105.0)、整数(如0)甚至可能是字符串格式的数值,直接转换类型或用字符串处理方法会因类型不统一失效。
有效解决方法
方法1:统一转数值类型后转整数
适合列中以数值型(浮点数/整数)为主的情况:
import pandas as pd # 先将object列转为数值类型,无法转换的会变为NaN df['ID'] = pd.to_numeric(df['ID'], errors='coerce') # 填充NaN(根据业务需求替换为0或其他值),再转为整数类型 df['ID'] = df['ID'].fillna(0).astype(int)
方法2:字符串处理后转整数
如果列中存在字符串格式的"23105.0",先做字符串清洗:
# 转为字符串后,移除末尾的.0后缀 df['ID'] = df['ID'].astype(str).str.replace(r'\.0$', '', regex=True) # 转为数值类型,处理异常值后转整数 df['ID'] = pd.to_numeric(df['ID'], errors='coerce').fillna(0).astype(int)
方法3:合并时提前指定类型
从源头避免类型混乱,合并时直接指定ID列的类型:
# 合并两个DataFrame时,指定ID列类型为int merged_df = pd.merge(df_left, df_right, on='ID', dtype={'ID': int})
验证结果
执行完上述方法后,可通过以下代码确认类型和数据格式:
print("ID列数据类型:", df['ID'].dtype) print(df)
内容的提问来源于stack exchange,提问作者Linear17
相关产品推荐
相关产品推荐

