'SeriesGroupBy' 对象没有属性 'is_unique'

'SeriesGroupBy' object has no attribute 'is_unique'

我有一个包含以下列四列的数据集:bug_report_numberclass_idtime_stamplabel。数据集如下所示:

41737   120098  1583149803  0
41737   120116  1583149803  0
41737   120136  1583149803  0
41748   120179  1583135020  0
41748   120177  1583135020  -1
41748   120177  1583135020  -1
41754   120177  1583135020  1
41754   120200  1583135020  0
41754   120188  1583135020  0

我想按 bug_report_number 分组,然后检查 class_id 列值对于该错误报告是否唯一。

例如,对于 41748 bug_report_number 我希望得到 False,对于 41754 我希望得到 True.

我写的代码如下:

import pandas as pd
train_file_path = "dataset_hbase - v.03.csv"
columns_name = ["bug_report_number", "class_id", "time_stamp", "label"]
columns_dtype = {0: "int64", 1: "int64", 2: "int64", 3:"int64"}
df = pd.read_csv(train_file_path, header=None, names=columns_name, dtype=columns_dtype)

temp = df.groupby(["bug_report_number"])
temp["class_id"].is_unique

但是当我使用 .is_unique 它时 returns 出现以下错误:

AttributeError: 'SeriesGroupBy' object has no attribute 'is_unique'

问题:

IIUC,你可以使用groupby + nunique + eq(1)。这个想法是计算每个“bug_report_number”和return的唯一“class_id”的数量,如果它等于 1,则为真否则为假。

s = df.groupby('bug_report_number')['class_id'].nunique()
out =  s.eq(1) 

输出:

bug_report_number
41737    False
41748    False
41754    False
Name: class_id, dtype: bool

使用:

data = pd.DataFrame({'bug_report_number': [1,2,1,2,1], 'id': [50,35,50,30,50]})
df =  pd.DataFrame(data)
df.groupby('bug_report_number')['id'].apply(lambda x: 0 if len(list(x))==len(set(x)) else 1)

输出: