I am trying to look at 2 different 'If' conditions in the below data frame but both have to be analyzed grouping by one column.
For every 'Text_1', if the 'Relation' is 'COVER' for more than one 'Text_2' and the 'Type' is different for the Text_2 which is 'COVER', then output should be 'Y', otherwise it should be no.
df = pd.DataFrame({
'ID': [1, 1, 1, 1, 1, 1, 2, 2, 2],
'Text_1': ['ABCDEF', 'ABCDEF', 'ABCDEF', 'GHIJKL', 'GHIJKL', 'GHIJKL', 'MNOPQR', 'MNOPQR', 'MNOPQR'],
'Text_2': ['ABC', 'BCD', 'GHI', 'JKL', 'XYZ', 'RST', 'MNO', 'PQR', 'XYZ'],
'Relation': ['COVER', 'COVER', 'UNRELATED', 'COVER', 'UNRELATED', 'UNRELATED', 'COVER','COVER', 'UNRELATED'],
'Type': ['NAME', 'PLACE', 'PLACE', 'NAME', 'PLACE', 'THING', 'PLACE', 'PLACE', 'PLACE']})
ID Text_1 Text_2 Relation Type
0 1 ABCDEF ABC COVER NAME
1 1 ABCDEF BCD COVER PLACE
2 1 ABCDEF GHI UNRELATED PLACE
3 1 GHIJKL JKL COVER NAME
4 1 GHIJKL XYZ UNRELATED PLACE
5 1 GHIJKL RST UNRELATED THING
6 2 MNOPQR MNO COVER PLACE
7 2 MNOPQR PQR COVER PLACE
8 2 MNOPQR XYZ UNRELATED PLACE
This is how the output looks like:
df_output = pd.DataFrame({
'ID': [1, 1, 1, 1, 1, 1, 2, 2, 2],
'Text_1': ['ABCDEF', 'ABCDEF', 'ABCDEF', 'GHIJKL', 'GHIJKL', 'GHIJKL', 'MNOPQR', 'MNOPQR', 'MNOPQR'],
'Text_2': ['ABC', 'BCD', 'GHI', 'JKL', 'XYZ', 'RST', 'MNO', 'PQR', 'XYZ'],
'Relation': ['COVER', 'COVER', 'UNRELATED', 'COVER', 'UNRELATED', 'UNRELATED', 'COVER','COVER', 'UNRELATED'],
'Type': ['NAME', 'PLACE', 'PLACE', 'NAME', 'PLACE', 'THING', 'PLACE', 'PLACE', 'PLACE'],
'Output': ['Y', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N']})
ID Text_1 Text_2 Relation Type Output
0 1 ABCDEF ABC COVER NAME Y
1 1 ABCDEF BCD COVER PLACE Y
2 1 ABCDEF GHI UNRELATED PLACE N
3 1 GHIJKL JKL COVER NAME N
4 1 GHIJKL XYZ UNRELATED PLACE N
5 1 GHIJKL RST UNRELATED THING N
6 2 MNOPQR MNO COVER PLACE N
7 2 MNOPQR PQR COVER PLACE N
8 2 MNOPQR XYZ UNRELATED PLACE N