我正在尝试对某些数据创建通用过滤器。考虑一个简化的例子:
my_data = pd.DataFrame(some_data)
my_filter = {"value": 100, "direction": ">"}
现在我想利用 numpy
的 where
来做类似的事情:
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/