我正在使用 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)