python-3.x 对于列1的每一行,查找列2的行

00jrzges  于 2023-05-30  发布在  Python
关注(0)|答案(1)|浏览(211)

我有一个数据框,里面有210万条记录:

p_id o_id in 
1    1    1 
1    1    2
1    2    2
1    1    3

我想创建两个 Dataframe ,其中一个只有1 o_id,对应1 in

p_id o_id in 
1    1    1 
1    1    3

一个是1 in中有1 o_id以上

p_id o_id in 
1    1    2
1    2    2

有一件事要说出来,一个o_id可以有多个in,但一个o_id可以有一个in
如何创建我所期望的两个 Dataframe ?

sdnqo3pr

sdnqo3pr1#

如果o_idin没有重复的值,则可以获得in的值计数。然后找出哪个in值出现一次。

indices = (df['in'].value_counts()
           .eq(1).loc[lambda s: s]
           .index)

out1 = df[df['in'].isin(indices)]
out2 = df[~df['in'].isin(indices)]
$ print(indices)

Int64Index([1, 3], dtype='int64')

$ print(out1)

   p_id  o_id  in
0     1     1   1
3     3     3   3

$ print(out2)

   p_id  o_id  in
1     1     1   2
2     1     2   2

相关问题