import pandas as pd
df_a = pd.DataFrame({'Number':[1,2,3,4,5,6,7,8],
'Column_A': ['C','E','G','L','E','N','P','R'],
'Column_B': ['D','F','H','M','Z','O','Q','S']})
df_b = pd.DataFrame({'Number':[1,2,3,4,5,6],
'Column_C': ['A','E','L','H','C','Q'],
'Column_D': ['B','F','M','G','F','P']})
mask = (((df_a['Column_A'].isin(df_b['Column_C'])) & (df_a['Column_B'].isin(df_b['Column_D']))) | ((df_a['Column_A'].isin(df_b['Column_D'])) & (df_a['Column_B'].isin(df_b['Column_C']))))
df_a[mask]
df_a
Number Column_A Column_B
0 1 C D
1 2 E F
2 3 G H
3 4 L M
4 5 E Z
5 6 N O
6 7 P Q
7 8 R S
df_b
Number Column_C Column_D
0 1 A B
1 2 E F
2 3 L M
3 4 H G
4 5 C F
5 6 Q P
df_a[mask]
Number Column_A Column_B
1 2 E F
2 3 G H
3 4 L M
6 7 P Q
- 在df_a中的Column_A和Column_B中找到df_b中的Column_C和Column_D对
- Column_C可以是Column_B,而Column_D可以是Column_A(AND-条件)
假设有更多的列需要"掩盖",那么病情就会变得非常长. 合并/加入或其他什么有更好的解决方案吗?