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

时间:2016-12-28 18:46:45

标签: python pandas numpy dataframe multiple-columns

例如:

我有A栏和B栏,我需要进行质量检查,以确保每次A栏都是现金'时B栏都是空的。我不想输出每一行,我只想知道(真/假),如果每次A列是现金&#39的话,B列都是空的。

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

mylist = []

while [df['A'] == 'Cash'] and [df['B'] is None]:

    mylist.append('Pass')
else: 

    mylist.append('Fail')

if 'Fail' in mylist:

     print 'Column A Pass'

else:

     print 'Column A Pass'

2 个答案:

答案 0 :(得分:1)

如果每次A列是'现金' ,则B列为空?

aCash = df.A == "Cash"
bNull = df.B.isnull()

aCash.sum() == (aCash & bNull).sum()  
  • aCash& bNull 给予真实,如果A都是"现金"和" B"如果它与aCash本身具有相同数量的Trues,则为NULL,对ACashBNULL的所有行均为NULL。

答案 1 :(得分:1)

测试条件相等

UPDATE Agents
SET Office_Count = Office_Count + 1
WHERE Id = NEW.Agents_Id;

演示

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