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

2024-04-25 02:16:26 发布

您现在位置:Python中文网/ 问答频道 /正文

如果另一个列值为True,您将如何比较两个(或更多列)值。 理想情况下,输出应该是True(如果所有内容都匹配正确)否则为False。你知道吗

类似于:df['value1'].equals(df['value2'])但前提是df['isValid']为真。你知道吗

对不起,如果这是一个愚蠢的问题,我是一个初学者与熊猫。。。你知道吗

考虑以下数据帧:

例1:

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

输出应该是:True作为记录1和2个匹配,“isValid”列为True(意味着我们必须比较这些值)

例2:

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

输出应为(无需进行比较,无任何错误)

例3:

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

输出应为False(因为记录3的值1和值2不同)


Tags: 数据falsetrue内容df记录情况理想
3条回答

下面是一个简单的函数,它处理all False is'isValid'的情况,仍然返回单个boolTrue

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

我会的

df.eval('value1==value2')[df.isValid].all()

这里有一个方法:

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

相关问题 更多 >