如何摆脱熊猫将excel表中的大数转换为指数?
Posted
技术标签:
【中文标题】如何摆脱熊猫将excel表中的大数转换为指数?【英文标题】:how to get rid of pandas converting large numbers in excel sheet to exponential? 【发布时间】:2016-12-05 23:02:25 【问题描述】:在 excel 表中,我有两列大数字。
但是当我用 read_excel() 读取 excel 文件并显示数据框时,
这两列以科学格式以指数形式打印。
如何摆脱这种格式?
谢谢
Pandas 中的输出
【问题讨论】:
为什么要这样做?你知道,在内部根本没有区别。这只是可视化/输出功能,它认为,缩短它是一个好主意。 是的,我同意,不习惯科学记数法..这就是为什么我更喜欢它的原始形式 由于其他原因,这实际上可能是非常有问题的。在我们的其中一个系统中,记录的 ID 用于数据库中的键。所以手动根据 pandas 输出查询数据库变得非常困难。此外,对于非常长的 ID,其中有很多零,例如 1000000000000000000000041,符号会忽略 41。 【参考方案1】:科学记数法的应用方式是通过pandas的显示options控制的:
pd.set_option('display.float_format', ':.2f'.format)
df = pd.DataFrame('Traded Value':[67867869890077.96,78973434444543.44],
'Deals':[789797, 789878])
print(df)
Traded Value Deals
0 67867869890077.96 789797
1 78973434444543.44 789878
如果这只是出于演示目的,您可以将您的 将数据转换为字符串,同时逐列格式化它们:
df = pd.DataFrame('Traded Value':[67867869890077.96,78973434444543.44],
'Deals':[789797, 789878])
df
Deals Traded Value
0 789797 6.786787e+13
1 789878 7.897343e+13
df['Deals'] = df['Deals'].apply(lambda x: ':d'.format(x))
df['Traded Value'] = df['Traded Value'].apply(lambda x: ':.2f'.format(x))
df
Deals Traded Value
0 789797 67867869890077.96
1 789878 78973434444543.44
另一种更直接的方法是将以下行放在代码的顶部,仅格式化浮点数:
pd.options.display.float_format = ':.2f'.format
【讨论】:
我已经应用了这个display.precision
,但它似乎影响了小数部分,这是我想要影响的整数部分
您能否举例说明 (i) 您想要实现的目标和 (ii) 您想要避免的目标?
好的,(i) 我想要我的 excel 文件中的确切值 (ii) 我想避免 pandas 以科学形式表示最后两列中的大数字 (imgur.com/a/9Ls6c)
我面临同样的问题,我在这里看不到任何人提供的解决方案。 @NathanielBabalola 如果您找到任何解决此问题的方法,请告诉我。以上是关于如何摆脱熊猫将excel表中的大数转换为指数?的主要内容,如果未能解决你的问题,请参考以下文章
使用php和pear写入excel时如何避免大数的科学记数法