Python 数据帧排序_值不适用于非常大的整数

Python 数据帧排序_值不适用于非常大的整数,python,sorting,pandas,ubuntu,dataframe,Python,Sorting,Pandas,Ubuntu,Dataframe,我有一个场景,在这个场景中,我有代表非常大整数的最后一位字符串。数据帧排序值似乎不适用于非常大的数字 例如 输出 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.4/dist-packages/pandas/core/frame.py", line 3139, in sort_values na_posit

我有一个场景,在这个场景中,我有代表非常大整数的最后一位字符串。数据帧排序值似乎不适用于非常大的数字

例如

输出

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/pandas/core/frame.py", line 3139, in sort_values
    na_position=na_position)
  File "/usr/local/lib/python3.4/dist-packages/pandas/core/groupby.py", line 4128, in _lexsort_indexer
    c = Categorical(key, ordered=True)
  File "/usr/local/lib/python3.4/dist-packages/pandas/core/categorical.py", line 298, in __init__
    categories = self._validate_categories(categories)
  File "/usr/local/lib/python3.4/dist-packages/pandas/core/categorical.py", line 487, in _validate_categories
    categories = Index(categories, dtype=dtype)
  File "/usr/local/lib/python3.4/dist-packages/pandas/indexes/base.py", line 232, in __new__
    return Int64Index(subarr.astype('i8'), copy=copy,
OverflowError: Python int too large to convert to C long
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python3.4/dist packages/pandas/core/frame.py”,第3139行,以sort_值表示
na_位置=na_位置)
文件“/usr/local/lib/python3.4/dist-packages/pandas/core/groupby.py”,第4128行,在lexsort索引器中
c=分类(键,有序=真)
文件“/usr/local/lib/python3.4/dist-packages/pandas/core/categorial.py”,第298行,在__
类别=自我验证类别(类别)
文件“/usr/local/lib/python3.4/dist-packages/pandas/core/category.py”,第487行,在“验证”类别中
类别=索引(类别,数据类型=数据类型)
文件“/usr/local/lib/python3.4/dist-packages/pandas/indexes/base.py”,第232行,新__
返回Int64Index(subar.astype('i8'),copy=copy,
溢出错误:Python int太大,无法转换为C long
我如何解决这个问题

排序值还有其他选择吗

我对1000个元素数组的数据集进行11级排序。 我需要这个以巨大的速度工作,因为整个转换点 用二进制数代替字符串组合是为了获得巨大的速度


非常奇怪,这个问题发生在我的ubuntu服务器上,它是一台64位c4.5的大型计算机,但在我的macbook上却没有发生。

正如Scot在评论中提到的, 对非常大的数字使用
float
,对我来说很有效

collection = [{'val1': 1, 'val2': 21267647942462174285355641184253378561*1.0}, 
              {'val1': 2, 'val2': 42535295884924348570711282368506757122*1.0}]
也可作为排序的备选方案

sorted(collection, key=lambda x: (-x['val1'], -x['val2']))

如果将数据读入列表,是否仍然无法排序?实际上,如果使用
import sys
sys.maxsize>
,您将看到问题(如
溢出错误所示)显示整数对于Python来说太大,或者您的machineThanks为我工作。请非常小心地将值更改为浮点数,您会发现您失去了精度,并且一些数字不会有什么不同。请尝试这是Python,以了解我指的是int(float(123456789001234567))
sorted(collection, key=lambda x: (-x['val1'], -x['val2']))