小编Xyz*_*Xyz的帖子

使用 Pandas 从 Redshift 读取 bigint (int8) 列数据,无需科学记数法

我正在使用 Pandas 从 Redshift 读取数据。我有一个bigint( int8) 列,它以指数形式出现。我尝试了以下方法,但在这些情况下会截断数据。

该列中数据的样本值为:635284328055690862。它读作6.352843e+17.

我试图将其转换int64为 Python。

import numpy as np
df["column_name"] = df["column_name"].astype(np.int64)
Run Code Online (Sandbox Code Playgroud)

在这种情况下的输出是:635284328055690880。在这里我丢失了我的数据,它0最终将其扩展到。

预期输出: 635284328055690862

甚至,如果我这样做,我也会得到相同的结果。

pd.set_option('display.float_format', lambda x: '%.0f' % x)
Run Code Online (Sandbox Code Playgroud)

输出: 635284328055690880

预期输出: 635284328055690862

这似乎是 Pandas 的正常行为。我什至尝试使用列表创建一个 Dataframe 并且仍然得到相同的结果。

import pandas as pd
import numpy as np

pd.set_option('display.float_format', lambda x: '%.0f' % x)
sample_data = [[635284328055690862, 758364950923147626], [np.NaN, np.NaN], [1, 3]]
df = pd.DataFrame(sample_data)


Output:
0 635284328055690880 758364950923147648
1                nan …
Run Code Online (Sandbox Code Playgroud)

python precision numpy pandas amazon-redshift

5
推荐指数
1
解决办法
266
查看次数

标签 统计

amazon-redshift ×1

numpy ×1

pandas ×1

precision ×1

python ×1