根据行出现次数选择数据框结果

时间:2018-03-15 18:42:51

标签: python pandas dataframe

鉴于以下DataFrame,我如何只检索IS_TESTED具有True和False值的值。

d = pd.DataFrame({"ID":[700,700,701,702,702,703],"IS_TESTED":[True,False,True,False,True,True],"TEST_NAME":["A","B","A","A","B","A"]})

enter image description here

在以下示例中,我想要的结果应该是:

700 True  A 
700 False B 
702 False A 
702 True  B

自701& 703只发生一次。

enter image description here

2 个答案:

答案 0 :(得分:4)

使用groupby和nunique

d[d.groupby('ID').IS_TESTED.transform('nunique') > 1]


    ID.         IS_TESTED   TEST_NAME
0   700         True         A
1   700         False        B
3   702         False        A
4   702         True         B

答案 1 :(得分:3)

或者,您可以将groupbyfilter

一起使用
d.groupby('ID').filter(lambda x: x.IS_TESTED.nunique() > 1)

输出:

    ID  IS_TESTED TEST_NAME
0  700       True         A
1  700      False         B
3  702      False         A
4  702       True         B