鉴于以下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"]})
在以下示例中,我想要的结果应该是:
700 True A
700 False B
702 False A
702 True B
自701& 703只发生一次。
答案 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)
或者,您可以将groupby
与filter
:
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