Если вы хотите применить эту логику для группы Col1
, используйте groupby.apply
:
df['Col4'] = df.groupby('Col1').apply(lambda x: x['Col2'].eq(x['Col3'])).values
Col1 Col2 Col3 Col4
0 A [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] [1, 2, 3, 4] False
1 A [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] True
2 A [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] [1, 2, 3, 4, 5, 6, 7, 8, 9] False
3 B [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] True
4 B [1, 2, 3, 4, 5] [1, 2, 3] False
5 C [1, 2, 3, 4, 5, 6, 7] [1, 2, 3, 4, 5, 6, 7] True
6 C [1, 2, 3, 4, 5, 6, 7] [1, 2, 3] False
7 C [1, 2, 3, 4, 5, 6, 7] [1, 2, 3, 4] False
Не принимая во внимание группы, выдает тот же результат в этом случае, используя eq
df['Col4'] = df['Col2'].eq(df['Col3'])
Col1 Col2 Col3 Col4
0 A [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] [1, 2, 3, 4] False
1 A [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] True
2 A [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] [1, 2, 3, 4, 5, 6, 7, 8, 9] False
3 B [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] True
4 B [1, 2, 3, 4, 5] [1, 2, 3] False
5 C [1, 2, 3, 4, 5, 6, 7] [1, 2, 3, 4, 5, 6, 7] True
6 C [1, 2, 3, 4, 5, 6, 7] [1, 2, 3] False
7 C [1, 2, 3, 4, 5, 6, 7] [1, 2, 3, 4] False