pandas解决excel科学计数法问题
本文介绍pandas处理Excel中超过14位数字自动转换为科学计数法的问题。提供两种解决方案:数据量小时使用to_csv替代to_excel;通用方法是在read_excel时指定dtype=str将所有数据读为字符串。此外,还讨论了将特定字段转为int类型时需先处理空值的注意事项,以避免转换错误。
pandas解决excel科学计数法问题
Excel默认会将超过14位的数字转换为科学计数法格式,且其后的数字会被截断为0。
在使用pandas进行表格合并或生成新表时,这是一个常见且令人头疼的问题。
经测试,以下两种方法有效:
1、若数据量较小,可将to_excel替换为to_csv。CSV格式对数据的包容性较强,但当数据量庞大时,可能会遇到文件无法打开的情况。
2、通用解决方案,在read_excel时:
df = pd.read_excel("filepath", dtype=str)将所有数据统一设置为字符串类型(str),从而避免数字类型的自动转换问题。
但需要注意以下几点:
df = df.infer_objects()
"""
"""
df.to_excel("filepath", index=False, encoding="utf-8")pandas替换科学计数法数字
在使用Pandas读取数据时,发现工单编号、电话号码等字段被记录为科学计数法。通过观察发现,当电话号码类型为float时采用科学计数法,而int类型则不会。因此,尝试将电话号码转换为int类型(在Excel中将电话号码转换为字符串类型并未解决问题)。
首先,需要将空值转换为数值,此处将其转换为-1(这里将data的所有字段都填充为-1)。
data = data.fillna(-1)将电话号码字段转换为int类型(此处将所有需要int类型的数字都进行了转换。注意:如果含有空值,会报错不能将NA转化为Integer)。
data[['联系电话','关联工单','处理人员','处理满意度']].astype('int64')以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













