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

在Google Colab中从Google Sheets导入表格时指定数据类型,解决末尾零丢失

解决Google Sheets导入DataFrame时数值尾0丢失及类型问题

当使用gspread的get_all_records()导入数据时,确实无法直接像pd.read_excel那样指定列数据类型,这也是导致数值尾0丢失、列被识别为object类型的核心原因。以下是两种可行的解决方法:

方案一:手动获取单元格值并指定类型转换

跳过get_all_records()的自动解析,直接获取原始单元格值后自行处理类型转换,同时可修正数值解析错误:

planilha_reg = gc.open('base_modelo_REG')
aba_reg = planilha_reg.sheet1

# 获取所有单元格内容(含表头)
all_values = aba_reg.get_all_values()
# 构建初始DataFrame
df_reg = pd.DataFrame(all_values[1:], columns=all_values[0])

# 针对目标列进行类型转换及精度修复
target_columns = ['你的列名1', '你的列名2']
for col in target_columns:
    # 转换为数值类型,同时处理可能的解析错误
    df_reg[col] = pd.to_numeric(df_reg[col], errors='coerce')
    # 保留三位小数,恢复末尾的0
    df_reg[col] = df_reg[col].round(3)

方案二:导出为CSV后用pandas读取(支持指定dtype)

将Google Sheets导出为CSV格式,再用pd.read_csv指定列数据类型,完全复用你熟悉的pandas参数:

planilha_reg = gc.open('base_modelo_REG')
aba_reg = planilha_reg.sheet1

# 将Sheet导出为CSV格式内容
csv_content = aba_reg.export(format='csv')

# 用StringIO读取CSV并指定列类型
from io import StringIO
df_reg = pd.read_csv(
    StringIO(csv_content),
    dtype={'你的列名1': float, '你的列名2': float}
)

# 若需要强制显示三位小数(包括尾0),可设置pandas显示选项
pd.options.display.float_format = '{:.3f}'.format

额外注意事项

如果出现20.180变为2.018这类数值错误,大概率是Google Sheets的单元格格式设置问题——比如单元格被设为科学计数法或错误的小数位数。建议先在Google Sheets中把目标列格式改为「数值」并指定小数位数为3,再进行导入,能从根源减少解析偏差。

内容的提问来源于stack exchange,提问作者Luiz Gustavo Machado Ribeiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:55:30