Home > Back-end >  How to compare each value of column B with the value of column A?
How to compare each value of column B with the value of column A?

Time:07-19

Compare each value in B column with the first value in A column until it is greater than it, then set the expected column to true.

Then compare the value of A column with the expected column that is true until B column value is greater than it,then set the expected column to true.

Input:

import pandas as pd
A=[20,13,15,25,24,13,14,19,13,11]
B=[12,15,31,13,16,19,15,16,25,21]
df=pd.DataFrame({'A':A,'B':B})

Expected Output

    A   B   expected
0   20  12  
1   13  15  
2   15  31  TRUE
3   25  13  
4   24  16  TRUE
5   13  19  
6   14  15  
7   19  16  
8   13  25  TRUE
9   11  21  TRUE

CodePudding user response:

try this:

a = df.iloc[0].A
b = []
for idx, row in df.iterrows():
    if row.B > a:
        a = row.A
        b.append(True)
    else:
        b.append(False)
        
df['Expected'] = b

Output:

df
A   B   Expected
0   20  12  False
1   13  15  False
2   15  31  True
3   25  13  False
4   24  16  True
5   13  19  False
6   14  15  False
7   19  16  False
8   13  25  True
9   11  21  True

CodePudding user response:

You must use a custom function with a loop:

def compare(A, B):
    x = A[0]
    out = []
    for a,b in zip(A,B):
        if b>x:
            out.append(True)
            x = a
        else:
            out.append(False)
    return out

df['compare'] = compare(df['A'], df['B'])

output:

    A   B  compare
0  20  12    False
1  13  15    False
2  15  31     True
3  25  13    False
4  24  16     True
5  13  19    False
6  14  15    False
7  19  16    False
8  13  25     True
9  11  21     True
  • Related