df=pd.DataFrame({'col1':['a','a','b','b','c'],'col2':['x','y','x','y','x']})
Run Code Online (Sandbox Code Playgroud)
我想为 中的每个字母选择那些与 的col1字母所有可能配对的行col2。在这个例子中应该是
col1 col2
0 a x
1 a y
2 b x
3 b y
Run Code Online (Sandbox Code Playgroud)
因为这对[c y]失踪了。
尝试交叉表查找组合,检查是否存在all,然后使用isin切片:
s = pd.crosstab(df.col1, df.col2).eq(1).all(1)
df.loc[df['col1'].isin(s[s].index)]
Run Code Online (Sandbox Code Playgroud)
输出:
col1 col2
0 a x
1 a y
2 b x
3 b y
Run Code Online (Sandbox Code Playgroud)