pandas 如何根据两列中的值和第三列中的不同值筛选行

11dmarpk  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(150)

下面的代码生成一个 Dataframe 来说明我的问题

import pandas as pd
data = [[1152, '1', '10'], [1154, '1', '4'],
       [1152, '1', '10'],  [1155, '2', '10'], 
       [1152, '1', '4'],  [1155, '2', '10']]
    
df = pd.DataFrame(data, columns =['Cow', 'Lact', 'Procedure'])

这将生成以下内容

Cow   Lact  Procedure
0   1152    1   10
1   1154    1   4
2   1152    1   10
3   1155    2   10
4   1152    1   4
5   1155    2   10

我想找出Cow和Lact相同但procedure不同的行。我要查找的输出为

Cow   Lact  Procedure
0   1152    1   10
1   1152    1   10
2   1152    1   4

我想它将需要一个groupby和filter函数,但不知道如何把它放在一起。谢谢

jmo0nnb3

jmo0nnb31#

使用groupby.transform('nunique')和布尔索引:

df[df.groupby(['Cow', 'Lact'])['Procedure'].transform('nunique').gt(1)]

输出:

Cow Lact Procedure
0  1152    1        10
2  1152    1        10
4  1152    1         4

相关问题