我在熊猫工作,我想跨多个字段应用多个过滤器到数据框。熊猫:多列过滤
我正在处理另一个更复杂的数据框,但我正在简化这个问题。下面是一个简单的数据帧的设置:
dates = pd.date_range('20170101', periods=16)
rand_df = pd.DataFrame(np.random.randn(16,4), index=dates, columns=list('ABCD'))
应用一个过滤器,以该数据帧是有据可查的,简单的:
rand_df.loc[lambda df: df['A'] < 0]
由于拉姆达看起来像一个简单的布尔表达式。很容易做到以下几点。这不起作用,因为它不是一个布尔表达式,而是可调用的。这些不能作为布尔表达式:
rand_df.loc[lambda df: df['A'] < 0 and df[‘B’] < 0]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-31-dfa05ab293f9> in <module>()
----> 1 rand_df.loc[lambda df: df['A'] < 0 and df['B'] < 0]
我发现有两种方法可以成功实现这一点。我会将它们添加到潜在的答案中,以便您可以直接对其作出解答。但是,我想征求其他方法,因为我不确定这些方法是否是过滤熊猫数据帧的非常标准的方法。
联合国重复的加速评估。然而它并不像这个那样干净。这个问题有一些多余的背景,例如数据是从CSV读入的。这是一个干净的例子,您可以将代码直接粘贴到您自己的REPL中,提出答案并发布。在很短的时间内,这个问题比重复的候选人有更多的答案。因此,我认为重新开放是有道理的。 –
问题是完全一样的,重复的答案是由熊猫的创建者编写的,所以我认为它是一个安全的选择,那是过滤数据框的最佳方式。 – DJK
谢谢。谦虚地指出,我应该特别考虑Wes McKinney回答的熊猫问题。 –