You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:20:40