Pandas:astype(int)将所有值转换为-2147483648

2mbi3lxu  于 2023-03-21  发布在  其他
关注(0)|答案(2)|浏览(210)

我正在使用astype()将大数字转换为int

import pandas as pd
x = [56668772800.0, 55899926600.0, 55038007900.0, 58073681300.0, 58224458500.0]
df = pd.DataFrame(x, columns=["pol_number"])
df.pol_number = df.pol_number.astype(int)
df

所有五个值都变成了-2147483648。
我假设这些数字对于int类型来说太大了,但是long intbig int不能编译。

syqv5f0l

syqv5f0l1#

使用int64:

import pandas as pd
x = [56668772800.0, 55899926600.0, 55038007900.0, 58073681300.0, 58224458500.0]
df = pd.DataFrame(x, columns=["pol_number"])
df.pol_number = df.pol_number.astype('int64')
df

输出:

pol_number
0  56668772800
1  55899926600
2  55038007900
3  58073681300
4  58224458500
6jjcrrmo

6jjcrrmo2#

你可以使用numpy代替常规的Python整数,因为numpy有更广泛的数据类型,包括int64,它可以表示大整数:

import pandas as pd
import numpy as np

x = [56668772800, 55899926600, 55038007900, 58073681300, 58224458500]
df = pd.DataFrame(np.array(x, dtype=np.int64), columns=["pol_number"])
print(df)

相关问题