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

Pandas中左连接后id列自动舍入问题求助

解决DataFrame左连接后id列自动舍入的问题

问题原因

左连接后id列出现舍入,大概率是以下两种情况:

  • id列被存储为浮点数类型:浮点数无法精确表示大整数,导致显示时精度丢失;若读取数据时id列存在空值,pandas会自动将整数列转为float类型。
  • pandas显示设置限制:默认对大整数或浮点数采用科学计数法/截断显示,看起来像是舍入。

解决方案

1. 强制id列为整数类型(优先推荐)

先确认id列的数据类型,再转换为整数(支持空值的话用Int64类型):

import pandas as pd

# 查看数据类型
print(df1.dtypes)

# 转换为可空整数类型(兼容空值)
df1['id'] = df1['id'].astype('Int64')

# 若确认无空值,直接转普通整数
df1['id'] = df1['id'].astype(int)

读取数据时直接指定类型,从源头避免问题:

df1 = pd.read_csv('your_file.csv', dtype={'id': 'Int64', 'ticket_id': int})
df2 = pd.read_csv('another_file.csv', dtype={'ticket_id': int})

2. 调整pandas显示设置

如果数据类型正确只是显示问题,修改显示规则避免自动舍入:

# 禁止浮点数科学计数法,显示为整数格式
pd.set_option('display.float_format', '{:.0f}'.format)

# 或者更灵活的设置,仅处理整数类浮点数
pd.set_option('display.float_format', lambda x: f'{x:.0f}' if x.is_integer() else x)

3. 确保关联键类型一致后再连接

连接前保证两个DataFrame的ticket_id类型一致,避免连接过程中触发类型转换:

# 统一关联键类型
df2['ticket_id'] = df2['ticket_id'].astype(df1['ticket_id'].dtype)

# 执行左连接
merged_df = df1.merge(df2, on='ticket_id', how='left')

内容的提问来源于stack exchange,提问作者Keerti Baskar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:18:11