如何使用python比较不同列中的同一行?

如何使用python比较不同列中的同一行?,python,pandas,numpy,dataframe,multiple-columns,Python,Pandas,Numpy,Dataframe,Multiple Columns,例如: 我有A列和B列,我需要进行质量检查,以确保每次A列为“现金”时B列都为空。我不想让它输出每一行,我只想知道(真/假)当A列为“现金”时,B列是否为空 我的当前(不工作)代码: 如果每次A列为“现金”时B列都为空 如果A是“现金”,而“B”是空的,则aCash&B将给出真值,如果A的真值数与aCash本身的真值数相同,则表示A是Cash,B是NULL的所有行 测试条件的平等性 d1.A.eq('Cash').eq(d1.B.isnull()).all() 演示 d1 = pd.Data

例如:

我有A列和B列,我需要进行质量检查,以确保每次A列为“现金”时B列都为空。我不想让它输出每一行,我只想知道(真/假)当A列为“现金”时,B列是否为空

我的当前(不工作)代码:

如果每次A列为“现金”时B列都为空

  • 如果A是“现金”,而“B”是空的,则aCash&B将给出真值,如果A的真值数与
    aCash
    本身的真值数相同,则表示
    A
    Cash
    B
    NULL
    的所有行
测试条件的平等性

d1.A.eq('Cash').eq(d1.B.isnull()).all()
演示

d1 = pd.DataFrame(dict(
        A=['a', 'b', 'Cash', 'c', 'Cash', 'd'],
        B=[1, 1, None, 1, None, 1],
        C=[1, None, 1, 1, 1, 1]
    ))
print(d1)

      A    B    C
0     a  1.0  1.0
1     b  1.0  NaN
2  Cash  NaN  1.0
3     c  1.0  1.0
4  Cash  NaN  1.0
5     d  1.0  1.0



如果在上面的例子中,B在其他地方有一些NaN,这将不是真的,但它仍然满足逻辑,对吗?正确。我的解释是这就是OP想要的。如果不是,那么当
A
不是
现金时,您的方法会考虑
B
可能有
None
d1.A.eq('Cash').eq(d1.B.isnull()).all()
d1 = pd.DataFrame(dict(
        A=['a', 'b', 'Cash', 'c', 'Cash', 'd'],
        B=[1, 1, None, 1, None, 1],
        C=[1, None, 1, 1, 1, 1]
    ))
print(d1)

      A    B    C
0     a  1.0  1.0
1     b  1.0  NaN
2  Cash  NaN  1.0
3     c  1.0  1.0
4  Cash  NaN  1.0
5     d  1.0  1.0
d1.A.eq('Cash').eq(d1.B.isnull()).all()

True
d1.A.eq('Cash').eq(d1.C.isnull()).all()

False