Вы можете использовать широковещательную передачу или функции outer
, чтобы сравнить все строки. Вы столкнетесь с проблемами, когда длина станет большой.
import pandas as pd
import numpy as np
def validation(a, b):
"""a,b : np.array"""
arr = np.add.outer(a, b) # How to combine rows
i,j = np.where(arr % 2 == 0) # Condition
return pd.DataFrame(np.stack([a[i], b[j]], axis=1))
validation(df_1[0].to_numpy(), df_2[0].to_numpy())
0 1
0 1 5
1 2 4
2 2 6
3 3 5
В этом конкретном случае вы можете использовать тот факт, что четные числа поддерживают четность при добавлении к четным числам, а нечетные числа изменяют четность при добавлении к нечетным числам, поэтому определите этот столбец и объедините его это.
df_1['parity'] = df_1[0]%2
df_2['parity'] = df_2[0]%2
df_3 = df_1.merge(df_2, on='parity')
0_x parity 0_y
0 1 1 5
1 3 1 5
2 2 0 4
3 2 0 6