我怎么能在一个数据帧中输入一个大的数字?

2024-04-20 10:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对数据帧中的二进制值使用“amp;”操作。对于小于20位的数字,可以这样:

import pandas as pd
df=pd.DataFrame({"a":[1234567890123456789,2,3],"b":[4,5,6]})
df[df['a']&2==2]

Out[107]: 
   a  b
1  2  5
2  3  6

df['a']&2
Out[108]: 
0    0
1    2
2    2
Name: a, dtype: int64

但对于大于19位数的数字,我得到的是:

^{pr2}$

Tags: 数据nameimportdataframepandasdfas二进制
1条回答
网友
1楼 · 发布于 2024-04-20 10:37:37

您可以通过执行df.a.values & 2来完成,这将绕过pandas重载并在底层Python类型上工作。在

区别在于,较大的数字太大,无法放入64位有符号整数类型(np.int64),因此pandas将您的列设置为dtype object。在对象列上,&执行逻辑操作,而不是按位操作。在

可以通过以下方式使用无符号整数获得序列:

>>> bigNums = pandas.Series([12345678901234567890,2,3], dtype=np.uint64)
>>> bigNums & 2
0    2
1    2
2    2
dtype: uint64

但显然不能用uint64列创建数据帧,因为uint64 isn't fully supported in pandas。即使可以,如果对uint64使用过大的整数,最终也会遇到相同的问题。在

相关问题 更多 >