python - 对 DataFrame 内存进行排序是否高效?

标签 python pandas

在 pandas 内存中对 DataFrame 进行排序是否高效?即,我可以对数据帧进行排序而不将整个数据读入内存吗?

最佳答案

在内部,pandas 依赖 numpy.argsort进行所有排序。

话虽这么说:pandas DataFrames 由 numpy 数组支持,它必须作为一个整体存在于内存中。所以,回答你的问题:,pandas 需要内存中的整个数据集进行排序。

其他想法:

您当然可以使用多个步骤来实现这种基于磁盘的外部排序:加载数据集 block ,对其进行排序,保存排序后的版本。重复。加载每个已排序子集的一部分,将它们连接到一个 DataFrame 中并对其进行排序。这里您必须注意从每个源加载的量。例如,如果您的 1000 个元素数据集已排序,则从 10 个子集中获取前 10 个结果不会为您提供正确的前 100 个结果。但是,它会为您提供正确的前 10 个结果。

如果没有有关您的数据的更多信息,我建议您让一些(关系)数据库处理所有这些内容。毕竟,它们就是为这种事情而生的。

关于python - 对 DataFrame 内存进行排序是否高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29264486/

相关文章:

python - pandas数据框索引过滤

Python 自动检测和分割正则表达式组

python - Pandas df 到字典,其值作为从 df 列聚合的 python 列表

python - 用小数秒将 excel 时间导入 Pandas

python - Kivy 中的错误处理

python - Python(或一般的 CS)中的循环或分层字典式数据结构?

python - 具有列表值的 Pandas 数据框列

python - 有效计算均值和中位数

python - 如何在 Flask + gunicorn 应用程序中查看异常?

JavaScript 将 "·"字符添加到末尾