python - Pandas :过滤多列

标签 python pandas filtering

<分区>

我在 Pandas 中工作,我想将多个过滤器应用于跨多个字段的数据框。

我正在处理另一个更复杂的数据框,但我正在简化这个问题的上下文。这是示例数据框的设置:

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]

因为 lambda 看起来像一个简单的 bool 表达式。很想做以下事情。这是行不通的,因为它不是 bool 表达式,而是可调用的。其中的多个不能像 bool 表达式那样组合:

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]

我找到了两种成功实现它的方法。我会将它们添加到潜在的答案中,因此您可以直接将它们作为解决方案进行评论。但是,我想征求其他方法,因为我不太确定这两种方法是否是过滤 Pandas 数据框的非常标准的方法。

最佳答案

In [3]: rand_df.query("A < 0 and B < 0")
Out[3]:
                   A         B         C         D
2017-01-02 -0.701682 -1.224531 -0.273323 -1.091705
2017-01-05 -1.262971 -0.531959 -0.997451 -0.070095
2017-01-06 -0.065729 -1.427199  1.202082  0.136657
2017-01-08 -1.445050 -0.367112 -2.617743  0.496396
2017-01-12 -1.273692 -0.456254 -0.668510 -0.125507

或:

In [6]: rand_df[rand_df[['A','B']].lt(0).all(1)]
Out[6]:
                   A         B         C         D
2017-01-02 -0.701682 -1.224531 -0.273323 -1.091705
2017-01-05 -1.262971 -0.531959 -0.997451 -0.070095
2017-01-06 -0.065729 -1.427199  1.202082  0.136657
2017-01-08 -1.445050 -0.367112 -2.617743  0.496396
2017-01-12 -1.273692 -0.456254 -0.668510 -0.125507

PS 你会在the Pandas docs中找到很多例子

关于python - Pandas :过滤多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653647/

相关文章:

python - Pandas to_sql 如何确定将哪个数据框列放入哪个数据库字段?

python - Pandas 导入错误 : matplotlib is required for plotting

python - 如何在 Pyramid notfound_view_config中返回HTTPMovedPermanently(301状态)而不是HTTPFound(302)

python - 如果 dataframe.tail(1) 是 X,则执行某些操作

python - Mitmproxy使用python加载和卸载脚本

python - 查找高度与基线相交的点(Python)

python - 从列表中检测列中的特定字符串序列

matlab - matlab中的EEG带通滤波器

c# - C# 中图像过滤的高速性能

mysql - 非规范化与子/父和嵌套