elasticsearch,in-memory-database,Python,Pandas,Csv,elasticsearch,In Memory Database" /> elasticsearch,in-memory-database,Python,Pandas,Csv,elasticsearch,In Memory Database" />

Python 使用大型csv文件进行快速筛选、排序和提取(内存中?)的最佳方法

Python 使用大型csv文件进行快速筛选、排序和提取(内存中?)的最佳方法,python,pandas,csv,elasticsearch,in-memory-database,Python,Pandas,Csv,elasticsearch,In Memory Database,我有一个遗留的静态csv,大约有100万条记录,大小为1gb。每行大约有300个字段 一些字段是非规范化的一对多关系,如每个订单类别1、类别2、类别3、…、类别20等,但是类别字段的数量最多可以是20个,如果少于20个类别或如果超过20个类别,则会忽略额外的类别。字段值可以像“DX001-乳制品”,“CX002-化妆品”现在类别的顺序不是固定的。因此DX001可以位于N个类别(Category_1、Category_2、Category_3、Category_N)字段中的任意一个 金额还有一个字

我有一个遗留的静态csv,大约有100万条记录,大小为1gb。每行大约有300个字段

一些字段是非规范化的一对多关系,如每个订单
类别1、类别2、类别3、…、类别20
等,但是类别字段的数量最多可以是20个,如果少于20个类别或如果超过20个类别,则会忽略额外的类别。字段值可以像
“DX001-乳制品”
“CX002-化妆品”
现在类别的顺序不是固定的。因此
DX001
可以位于N个类别(
Category_1、Category_2、Category_3、Category_N
)字段中的任意一个

金额
还有一个字段,以美元为单位。比如
$1256.25

现在,我需要搜索所有类别为“DX001”或“CX002”且金额>1000美元的订单,并按金额排序,然后将仅包含这些记录的数据导出到csv,通过web界面提供给用户

哪种技术最适合以合理的成本快速处理(几秒钟处理查询并提供csv)的解决方案?就我个人而言,我已经进行了大规模的工作,并使用elasticsearch作为一个拥有TB数据的项目的数据源。但我个人认为,对于这个用例来说,这样做成本太高,也太过苛刻。或者我需要将其导入到传统数据库中吗?使用python可以在内存中完成这项工作吗?我熟悉Python,但如果有解决方案,也可以采用任何其他语言。如果你能帮忙,我将不胜感激

PS:我看了熊猫,但我不知道如何通过搜索N个字段中的每个字段来查询类别列表。所以,如果你知道如何解决熊猫的问题,请让我知道


谢谢

你考虑过数据库吗?遗留的.csv文件是静态的,那么为什么还要继续处理它呢?我认为,如果您将一次性转换为更合适的格式,然后查询新的源代码,您可能会获得最佳性能。我最熟悉MS SQL Server,但mySQL或任何其他开源SQL产品都应该能够完成类似这样的任务。您甚至可以将这些字段重新规范化,并将它们放回一个或多个子表中,以进一步提高性能。我当然可以这样做,但是此csv的输出用于其他系统,因此我现在仍然需要它。就像我需要以相同的格式过滤、排序和导出csv一样。如果这是一个熊猫是否能满足你需要的问题,那么答案是肯定的,它会起作用。至于第二个问题是什么,您只是想在多个列中获得唯一的值吗?我想我理解。就个人而言,我会使用某种类型的管道输入/输出来读取记录、解析记录和导出……除非您需要整个文件的结果来确定如何进行排序/过滤。我在PowerShell中使用管道进行了类似的数据文件过滤。Python不应该有太大的不同。