Pandas中重新初始化DataFrame未生效问题求助
Pandas float列转整数显示问题解决
问题根源
你用pd.DataFrame(df, dtype=object)只是把列的存储类型改成了object,但列里的每个元素本身还是float类型的数值,所以显示时依然会带小数点,不会自动变回整数。
可行解决方案
1. 修复类型(保留数值特性)
如果列里的float是因为存在空值(NaN)导致Pandas自动识别为float,用可空整数类型处理:
# Pandas 1.0及以上支持,保留空值同时显示为整数 df['C9_O1'] = df['C9_O1'].astype('Int64') # 若不需要保留空值,填充后转普通整数(示例用0填充,按需调整) df['C9_O1'] = df['C9_O1'].fillna(0).astype(int)
2. 读取时直接指定类型(更高效)
从源头解决,读取CSV时就指定列的正确类型:
# 列无空值时直接指定int df = pd.read_csv(filename, low_memory=False, dtype={'C9_O1': int}) # 列有空值时指定可空整数类型 df = pd.read_csv(filename, low_memory=False, dtype={'C9_O1': 'Int64'})
3. 仅调整显示格式(转字符串)
如果只是需要显示成整数样式,不需要数值运算,转成字符串:
df['C9_O1'] = df['C9_O1'].apply(lambda x: str(int(x)) if pd.notna(x) else x)
验证效果
执行转换后,用以下代码确认:
print(df['C9_O1'].dtype) print(df['C9_O1'].head(165))
内容的提问来源于stack exchange,提问作者Sriram
相关产品推荐
相关产品推荐

