我有一个多维和纯数值数据集,在概念上看起来像这样:
Id Field1 Field2 Field3
1 123 .05 10.33
2 234 .17 5.78
3 345 .01 0.23
4 456 .99 1233
...
...
...
我需要检索符合某些条件的已排序数据,如以下示例所示。
select * from data where Field1 > x and Field2 > y ordered by Field3 desc
对于过滤子句:
- 条件只能是字段*“运算符”x,其中“运算符”可以是>、<、=、>=或<=,x可以是任意数字。
- 条件相交(即,它们由 AND 而不是 OR 连接)。
- “排序依据”字段可以是任何字段*。
为我所描述的用例实现数据结构和算法的最佳方法是什么?
假设数据集的大小适中,在 10 万行以下。
这里我使用 SQL 语法来解释我想要实现的目标。我不打算卸载 SQL 中的数据。并且数据集不需要像 Python 中的数据结构那样在 DataFrame 中实现。可以是栈/队列/列表/字典……
如有任何帮助,我们将不胜感激。
最佳答案
在 vanilla python 中,这可以使用 filter 模块来实现。
from collections import namedtuple
row = namedtuple('Row', ['id', 'field1', 'field2', 'field3'])
dset = [
row(id=1, field1=123, field2=0.05, field3=10.33),
row(id=2, field1=234, field2=0.17, field3=5.78),
row(id=3, field1=345, field2=0.01, field3=0.23),
row(id=4, field1=456, field2=0.99, field3=1233),
]
target = [
row(id=2, field1=234, field2=0.17, field3=5.78),
row(id=3, field1=345, field2=0.01, field3=0.23),
]
assert filter(lambda x: x.field1 > 200 and x.field3 < 10, dset) == target
关于python - 在 Python 中使用多个条件过滤数据的最佳算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557504/