到目前为止,这里有一个示例:
df = pd.DataFrame({"barcode": [1,2,2,3,3,4, 4, 4], "date": ['today', 'today', 'tomorrow', 'tomorrow', 'tomorrow', 'yesterday', 'yesterday' ,'yesterday'], "info": [40,20,10,15,17,19, 21, 23]})
gb= df.groupby(['date'])
gb.filter(lambda x: x['barcode'].nunique!=1)
返回:
Empty DataFrame
Columns: [barcode, date, info]
Index: []
在我过滤掉它之后,仅应保留“昨天”,因为“今天”组中有2个不同的条形码,而“明天”组中有2个不同的条形码。这里发生了什么?并在示例中对要过滤的列进行了排序,但是需要吗?
答案 0 :(得分:2)
我会推荐
gb= df.groupby(['date'])
df = df[gb['barcode'].transform('nunqiue').eq(1)]
答案 1 :(得分:1)
nunique
是一种方法,而不是属性。修复:
gb.filter(lambda x: x['barcode'].nunique() ==1)