【问题标题】:How to select only rows with values over a threshold?如何仅选择值超过阈值的行?
【发布时间】:2018-10-04 01:32:46
【问题描述】:

假设我有以下数据框。

np.random.seed(0)  # Add seed to reproduce results. 
df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
df['id'] = ['CA', 'CA', 'CA', 'FL', 'FL', 'FL']
df['technique'] = ['one', 'two', 'three', 'one', 'two', 'three']
df

          A         B         C         D  id technique
0  1.764052  0.400157  0.978738  2.240893  CA       one
1  1.867558 -0.977278  0.950088 -0.151357  CA       two
2 -0.103219  0.410599  0.144044  1.454274  CA     three
3  0.761038  0.121675  0.443863  0.333674  FL       one
4  1.494079 -0.205158  0.313068 -0.854096  FL       two
5 -2.552990  0.653619  0.864436 -0.742165  FL     three

当任何列的值大于 2 时,我只想选择那些行。所以在上述情况下,我会得到。

          A         B         C         D  id technique
0  1.764052  0.400157  0.978738  2.240893  CA       one
5 -2.552990  0.653619  0.864436 -0.742165  FL     three

如何在不执行以下操作的情况下过滤多个列。

df[df.A >= 2 | df.B >= 2 | df.C >= 2 | df.D >= 2]

【问题讨论】:

  • 您的示例表明您想要绝对值大于 2 的行。

标签: python pandas


【解决方案1】:

您可以使用any

df[df.loc[:,'A':'D'].abs().gt(2).any(1)]
Out[219]: 
          A         B         C         D  id technique
0  1.764052  0.400157  0.978738  2.240893  CA       one
5 -2.552990  0.653619  0.864436 -0.742165  FL     three

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-22
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2019-05-29
    • 1970-01-01
    • 2020-12-24
    相关资源
    最近更新 更多