【问题标题】:Check if all dataframe row values are in specified range检查所有数据框行值是否在指定范围内
【发布时间】:2022-11-15 05:03:14
【问题描述】:

如果所有值都在指定范围内,如何检查数据框中的每一行?

import pandas as pd

new = pd.DataFrame({'a': [1,2,3], 'b': [-5,-8,-3], 'c': [20,0,0]})

例如范围 <-5, 5>:

>>    a  b   c
>> 0  1 -5  20  # abs(20) > 5, hence no
>> 1  2 -8   0  # abs(-8) > 5, hence no
>> 2  3 -3   0  # abs(-3) <= 5, hence yes

迭代解决方案

print(['no' if any(abs(i) > 5 for i in a) else 'yes' for _, a in new.iterrows()])

>> ['no', 'no', 'yes']

【问题讨论】:

    标签: python pandas dataframe any


    【解决方案1】:

    正在做:

    out = (df.gt(-5) & df.lt(5)).all(axis=1)
    # Or if you just want to supply a single value:
    # df.abs().lt(5).all(axis=1)
    print(out)
    

    输出:

    0    False
    1    False
    2     True
    dtype: bool
    

    您可以将其添加为新列,并根据需要将其更改为no/yes(我认为这是一个糟糕的主意):

    df['valid'] = np.where(df.abs().lt(5).all(1), 'yes', 'no')
    print(df)
    
    # Output:
    
       a  b   c valid
    0  1 -5  20    no
    1  2 -8   0    no
    2  3 -3   0   yes
    

    【讨论】:

    • 简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    相关资源
    最近更新 更多