在groupby Python后查找配对记录

J_j*_*ane 6 python pandas

我有一个这样的数据框:

df = pd.DataFrame(
    [['101', 'a', 'in', '10'],
     ['101', 'a', 'out', '10'], 
     ['102', 'b', 'in', '20'], 
     ['103', 'c', 'in', '30'],
     ['103', 'c', 'out', '40']], 
    columns=['col1', 'col2', 'col3', 'col4']
)

Run Code Online (Sandbox Code Playgroud)

我想按 col1 分组并找到在 col2 和 col4 中具有相同值的成对记录,但一个在 col3 中有 'in' 一个在 col3 中有 'out'。预期的结果是:

df_out = pd.DataFrame(
    [['101', 'a', 'in', '10'],
     ['101', 'a', 'out', '10']],
    columns=['col1', 'col2', 'col3', 'col4']
)
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

WeN*_*Ben 3

让我们尝试transform一下nunique

out = df[df.groupby(['col1','col2','col4'])['col3'].transform('nunique')==2]
Out[187]: 
  col1 col2 col3 col4
0  101    a   in   10
1  101    a  out   10
Run Code Online (Sandbox Code Playgroud)