仅当另一个列值为True时比较两个或多个列值

时间:2019-11-14 16:06:41

标签: python pandas dataframe

仅当另一个列值为True时,才如何比较两个(或更多列)值。 理想情况下,输出将为True(如果一切都正确匹配),否则为False。

类似这样的内容:df['value1'].equals(df['value2']),但前提是df ['isValid']为true。

对不起,如果这是一个愚蠢的问题,我是熊猫的初学者...

考虑以下数据框:

示例1:

isValid     value1   value2
True        50       50
True        19       19
False       48       40

输出应为: True ,因为记录了第一场和第二场比赛,并且“ isValid”列为True(意味着我们必须比较值)

示例2:

isValid     value1   value2
False       50       50
False       19       19
False       48       40

输出应为 True (无需进行比较,那么就没错了)

Example3:

isValid     value1   value2
True        50       50
False       19       19
True        48       40

输出应为 False (因为记录3的value1和value2不同)

3 个答案:

答案 0 :(得分:5)

我会做

let str = 'Hi how are you';

let reverse = str
        .split("")
        .reverse()
        .join("")
        .split(" ")
        .reverse()
        .join(" ")
    );

答案 1 :(得分:3)

这是一种方法:

df1[df1['isValid']].set_index('isValid').nunique(1).eq(1).all().all()
#True

答案 2 :(得分:1)

这是一个简单的函数,处理所有False为'isValid'的情况,仍然返回单个布尔True

def my_comp(df):
    u = df[df.isValid]
    if u.empty:
        return True
    else:
        return u['value1'].eq(u['value2']).all()

my_comp(df1)
#True

my_comp(df2)
#True

my_comp(df3)
#False