python - 在 Python 中的 pandas 数据框上创建通用数据过滤器

标签 python pandas numpy

我正在尝试对某些数据创建通用过滤器。考虑一个简化的例子:

my_data = pd.DataFrame(some_data)
my_filter = {"value": 100, "direction": ">"}

现在我想利用 numpywhere 来做类似的事情:

np.where(my_data (...) my_filter["value"])

其中,作为“(...)”,我想要 my_filter["direction"]。当然,我可以通过将适当的字符串放在一起来使用类似“eval(...)”的东西。

问题 但我想知道是否有一种方法可以不用 eval(...) 来做到这一点?

跟进“已回答”声明:这里的关键是我需要方向是通用的。基于值的子选择数据很容易“np.where(my_data == my_filter["value"])”,例如

最佳答案

演示:

In [73]: df
Out[73]:
   value direction
0    100         >
1     12         ^
2    101         >
3     13         v
4    100         <

In [74]: my_filter = ["value >= 100", "direction == '>'"]

In [75]: df.query(' and '.join(my_filter))
Out[75]:
   value direction
0    100         >
2    101         >

关于python - 在 Python 中的 pandas 数据框上创建通用数据过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47684053/

相关文章:

使用 win32ui DDE 模块的 Python 线程

python - Python 文字的安全读取

python - 循环中的累积加法

python - 如何将数组复制到特定长度的数组

python - pyenv:python:找不到命令

python 和 networkX keyerror

python - 将具有多个参数的函数传递给 DataFrame.apply

python - Pandas :在数据框的所有列中找到最大范围

python - 将 scipy 压缩距离矩阵转换为按行读取的较低矩阵

Numpy:将一维索引转换为多维