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